Ich versuche, mein Datenbankdesign richtig zu machen. Es ist eine große Reihe von alkoholischen Getränken, bestehend aus Bier, Schnaps, Wein und so weiter. Ich könnte sie alle in einer einzigen Tabelle halten, wie folgt:Normalisieren einer Datenbank zur Verringerung der Abhängigkeit
id category brand type price quantity description
1 Beer Heineken bottle $2.00 100 some description...
2 Beer Calsburg bottle $3.00 200 some description
3 Beer Heineken can $1.00 300 some description....
4 Liquor JWalker bottle $30.00 100 some descri...
scheint dies schlechtes Design Wiederholungen für Kategorie und Marke unter Berücksichtigung auftreten. So teile ich es in drei Tabellen wie folgt:
Kategorie Tabelle
id name(pk)
1 Beer
2 Liquor
Marke Tabelle
id name(pk) category_name(FK)
1 Heineken Beer
2 Carlsburg Beer
3 Lindemans Wine
4 JWalker Liquor
Produkttabelle
id(PK) type price quantity description category_name(FK) brand_name(FK)
1 Bottle $2.00 100 some description Beer Heineken
Dachte das wäre besser normalisiert aber so wie ich es sehe, kaum ein Unterschied zur ersten Tabelle. Und ich schließe mit type repeatnig auch, weil ich Wiederholungen auf Flasche bekommen kann, und so weiter. Also sollte ich einen 4. Tisch dafür bekommen?
Versuchen, zu normalisieren und es so sinnvoll wie möglich zu halten. Gibt es einen besseren Weg, dies zu tun?
Die Fremdschlüsselwerte sollten die ID der Zeile in der übergeordneten Tabelle sein, nicht der Wert. – duffymo
Ich denke, es ist in Ordnung, den Namen als PK zu verwenden, wenn sie immer eindeutig sind, aber wie OP darauf hingewiesen hat ... ohne zusätzliche Daten für Marke oder Kategorie, hat das Abspalten der Tabellen keinen großen Vorteil. – mhatch
Sagen Sie Heineken wird von einem anderen Unternehmen gekauft/verkauft und/oder wird umbenannt. Möchten Sie alle Produkte oder nur einen Datensatz in Ihrer Markentabelle aktualisieren? Eine einzelne Tabelle mag verlockend sein, reduziert aber die Flexibilität langfristig (vielleicht nicht reduzieren, sondern hinzufügen). Planen Sie, dass sich dieses System verändert? Wenn ja, so nah wie möglich an 3./4. *** Wenn das wirklich alles ist, was es sein wird, und Sie keine Änderungen erwarten, dann wird eine einzige Tabelle "schneller", nur die Wartung wird schwieriger. – xQbert