Denkanstoss zur Datenbankplanung

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von shaebich.

    Denkanstoss zur Datenbankplanung

    Hallo Leute,

    bräuchte mal ein paar Vorschläge für folgendes Szenarion:

    Ich würde gerne eine Programm schreiben um mein Budget zu kalkulieren und auch danach einen ISt-Soll Verglaich zu machen. Die Datenbank enthält Tabellen wie Budget, Jahr, Kunde, Lieferant, Produkte, etc. Soweit noch ganz einfach.
    Nun aber mein Problem:
    Wenn ein Lieferant, Kunde oder Produkt wegfällt und ich ihn/es löschen möchte, würde er auch alle dazugehörgigen Datensätze löschen. Dies hätte zur Folge, dass er auch mein Budget ändern würde und damit alle Ergebnisse unbrauchbar wären.
    Zweiter Punkt: Preise ändern sich. Produkt X ist ab heute 10% teurer. Würde ich den Preis einfach ändern, würde er alle vorherigen Einkäufe auch ändern, was zu einem immensen Choas führen würde.
    Wie kann man so etwas sinnvoll umsetzen? ?(
    Hallo TS,

    rein Buchhalterisch darf man den Kunden, Artikel usw. nicht löschen. du kannst ja eine Spalten anlegen mit "nicht mehr aktiv" oder so. Zum Preis, leg doch einfach noch eine Tabelle Preis an und gibt dort deinen Preis und Datum ab der Preis gilt an.

    Oder so :)

    TS71M schrieb:

    Zweiter Punkt: Preise ändern sich. Produkt X ist ab heute 10% teurer. Würde ich den Preis einfach ändern, würde er alle vorherigen Einkäufe auch ändern, was zu einem immensen Choas führen würde.


    So etwas darf keine Auswirkung haben auf vorherige Daten.
    Du musst doch eine extra Tabelle mit einkäufen haben in denen der Preis eingetragen ist und nicht wie in deinen Gedanken als Referenz...^^

    Falls du schon ein Datenmodell hast, könntest du es uns ja mal zeigen...

    Wie sehen deine Budgets aus? Hast du spezifische Budgets je Kontengruppe oder einfach nur Budget 2014 als fixe Summe?

    Zu dem Punkt mit den Debitoren stimme ich Svenson voll und ganz zu...niemals löschen...inaktiv setzten sollte das richtige sein.

    Bei den Produkten solltest du genauso vorgehen, diesen kannst du eine gültigkeit geben oder auch einfach aktiv/inaktiv setzen. Am besten ist es immer die Datenbasis zu erhalten für eventuelle spätere Auswertungen etc.

    Danke für eure Antworten.
    Bisher habe ich es auch schon mit Aktiv und Inaktiv gemacht.
    Wirft aber auch Porbleme auf. Wenn ich zum Beispiel in meinen Budget 2013 einen Lieferanten auswähle werden nur aktive angezeigt, was ja auch logisch ist. Jetzt wird dieser Lieferant aber in 2014 inaktiv. Gehe ich jetzt wieder ins Budget 2013 schmeisst er eine exception.
    Anbei ein Screenshot vom Budget.
    Das ganze Datenmodell ist viel zu gross für eine Seite.
    Du musst doch eine extra Tabelle mit einkäufen haben in denen der Preis eingetragen ist und nicht wie in deinen Gedanken als Referenz...^^

    Das klingt gut. Und wie trägst du den Preis ein? Ich hoffe automatisch...hast du ein Beispiel.
    Bilder
    • Screen-Budget.PNG

      51,2 kB, 1.047×807, 71 mal angesehen
    Hmm also erstmal solltest du GUI und Daten strikt trennen.

    Ich würde einen Tab machen um neue Daten einzutragen und einen Übersichts Tab wo ich mir die Daten mittels Linq aus meinen Tabellen ziehe und sie dort anzeige.

    Oder eine einfachere Lösung, du arbeitest einfach mit Reports...

    Du machst dir eine simple oder nicht simple (dein Problem) Eingabeseite und deine Übersichtsseite wie die oben wird einfach ein Report. Den oder die Report/s kannst du ganz einfach erstellen und sauber strukturieren, damit fällt deine suboptimale Lösung mit den Berechnungen weg :D

    EDIT:

    zum Thema Preis: Jedes Produkt sollte doch einen Preis haben. Der darf und MUSS sich natürlich im Laufe der Zeit auch ändern.
    Wenn du jetzt ein Produkt Einkaufst/Verkaufst musst du dir doch nur den aktuellen Preis aus deiner DB ziehen und in die Tabelle Einkauf/Verkauf schreiben.