2016-04-30 19 views
0

Ich habe ein ziemlich häufiges (glaube ich) Problem, aber wegen seines Namens (Paket) ist es schwierig zu suchen (dh ich bekomme alles außer 'physisches Paket' bedeutet ...).RDBMS-Modell für 'Paket', das auch Teil eines anderen 'Pakets' sein kann

Grundsätzlich habe ich ein Produkt, das gepackt werden kann, sagen wir in einer Box, wo es 2 davon gibt.

Dann werden diese einzelnen Boxen in einen Karton, wo 10 von ihnen gehen. Insgesamt gibt es 20 Produkte in einer Box.

Dieser Aufbau muss jedoch nicht notwendigerweise 2/10 sein, es kann 1/20 sein oder sogar ein weiteres Nest, z. 1/5/4 (immer noch 20 Produkte insgesamt).

Wie würde man eine Tabellen/Referenzen in einigen RDBMS (z. B. MySql) machen?

+1

Google herum für "Bill of Materials", wie es sich auf Datenbank-Design bezieht. –

Antwort

0

In erster Linie erscheint mir das nicht als ein Datenbank-Design-Problem, da der größte Teil der Bemühungen gehen sollte, um die Anforderungen zu klären.

Was sind Ihre Daten? Dies sind diejenigen, die in der Datenbank gespeichert werden. Alle Daten, die von ihnen berechnet werden können, müssen nicht gespeichert werden, da sie redundant sind. Aus Ihrer Beschreibung schließe ich, dass die Anzahl der Produkte einer Box gegeben ist, aber die Verpackung der Produkte in der Box (Ihr 1/5/4 Beispiel) ist nicht festgelegt. Das würde bedeuten, dass jede Verpackung von Produkten ist erlaubt, solange das Gesamtprodukt Zahl 20 nicht überschreitet dies auszudrücken, ein Tisch-Design wie

Product(id, name, ..., max_in_box, ...) 

wäre ausreichend.

Dies könnte jedoch physikalisch unbefriedigend sein. Nicht beliebig Anzahl der Pakete mit insgesamt 20 Produkten könnte tatsächlich in die Box passen. Um dies auszudrücken, müssten Sie Länge/Breite/Höhe von Produkten, Paketen und Boxen speichern und algorithmisch bestimmen, ob eine bestimmte Kombination passt.

Eine andere Erweiterung kann erforderlich sein, wenn Sie verschiedene Arten von Boxen haben. Jetzt konnte das max_in_box Attribut nicht mit dem Produkt platziert werden, sondern in einer separaten Entität/Tabelle, die Produkte mit Boxtypen verknüpft.