Ich entwerfe meine erste Datenbank für MySQL und die Idee hier ist, dass wir Bestellungen haben, die mehrere verschiedene Artikel enthalten können. Also entschied ich mich, die Bestellung mit allen relevanten Informationen in einer Tabelle zu speichern, die Artikel in einer anderen, und dann eine dritte Tabelle zu erstellen, in der jeder bestellte Artikel gespeichert wird. Natürlich muss ich jedes Mal, wenn ich eine Bestellung auflisten muss, jede OrderedItemsID finden, für die OrderID die gleiche ist wie die OrderID, die ich benötige, und diese mit Artikeln vergleichen.Was ist falsch an diesem SQL-Schema?
Jetzt da dies mein erstes DB-Design ist, bin ich nicht arrogant genug, um zu denken, dass es eine gute Lösung ist, also habe ich mich gefragt, ob jemand eine gute Lösung für diese Art von Problem kennt? Dank
Bild ist bei http://img211.imageshack.us/img211/5575/stackoverflowq.png
, die für einen ersten Versuch in Ordnung, gute Arbeit sieht :) – rjohnston
gut! Gut gemacht auf dem 'PriceAtPurchase' Attribut; Ich vermute, dass viele Anfänger den Fehler begehen würden, anzunehmen, dass "Price" nicht von "Items" dupliziert werden sollte - doch wie Sie richtig bemerkt haben, ist dies keine Duplizierung! Und; Wie Russ hervorhebt, kann ein ähnliches für mögliche Attribute sowohl für "Bestellungen" als auch für "Bestellte Artikel" in Betracht gezogen werden. Die einzige Sache, die ich hinzufügen muss, ist, dass die Verwendung eines neuen künstlichen Schlüssels auf "OrderedItems" Sie mit einem Attribut belässt, das ** NO ** bedeutet, ** NIE ** referenziert wird und dazu führen kann, dass Anomalien aktualisiert werden. Es ist ein strittiges Thema, aber ich denke, du siehst, wo ich stehe. ^^ –