Wie gestalte datenbankstruktur am besten
5 Antworten zur Frage
Videos zum Thema
Wie gestalte ich diese Datenbankstruktur am besten?
Lagere alle Daten, die in mehr als einer Tabelle vorkommen, aus diesen Tabellen aus in eine bis mehrere weitere Tabellen.
Diese neuen Tabellen versiehst mit Primärschlüsseln und in den bisherigen speicherst nur noch diesen Primärschlüssel als Fremdschlüssel.
Bei Bedarf kannst dann noch Constraints definieren, die dann automatisch prüfen, ob es zum Fremdschlüssel einen passenden Eintrag in der neuen Tabelle gibt - also z.B. bei einer Kundennummer, ob es diese auch im Kundenstamm gibt.
Bei praktisch allen vernünftigen DBMS ist ein Fremdschlüssel automatisch auch ein Constraint. Wäre ja auch doof, wenn man einfach so die referentielle Integrität verletzen könnte.
Üblicherweise ja, aber ich hoffe, Du kannst Dir zumindest vorstellen, was ich oft genug erleben musste:
"Schlüssel speichern: JA, Schlüssel prüfen: NÖ, weil. blablabla
Pack einfach alles in eine Tabelle und setze ein Flag für Angebot oder Auftrag … die Kundendaten würde ich natürlich in eine separate Tabelle packen und die dann mit der Auftragstabelle verknüpfen. Das ist klar.
Grundregel: niemals ein Datum in zwei Tabellen halten! Redundanz in Datenbanken bringt eine Menge Ärger.
Eine Tabelle könnte die Stammdaten des Kunden halten. Diese benötigst Du sowohl für Angebote als auch für Aufträge. Haben die Kunden eine übergeordnete Struktur, z.B. mehrere Ansprechpartner in einer Firma, dann kommen die Firmendaten in eine Tabelle, die Kundendaten in eine zweite, und die Firmendaten werden verknüpft.
Informationen für das Angebot kommen in eine weitere verknüpfte Tabelle. Die zusätzlichen Daten für den Auftrag würde ich wiederum seperat erfassen und mit dem Auftrag verknüpfen.
Jetzt mußt Du noch überlegen, ob Du eine Historie benötigst. In dem Fall würde ich eine weitere Tabelle "Historie" anlegen, in die alle Daten kopiert werden, wenn der Auftrag als "geliefert" markiert wird. So kannst Du auch später noch suchen, wohin welcher Auftrag gegangen ist. eventuell mußt Du auch Angebote so ablegen.
Im allgemeinen ist es nicht zielführend, einfach drauflos Tabellen zu erstellen. Besser man fängt mit einem sauberen, konzeptionellen Modell an und setzt das dann um. Wenn man das richtig macht, kommen ganz von selbst normalisierte Tabellen ohne unerwünschte Redundanz raus.