2016-06-26 17 views
0

Ich versuche, mit einem komplexen Produkt-Datenbank-Design umzugehen. Ich steckte auf verschachtelte Datenstruktur.PostgreSQL Design für Produkte und Inventar mit Farbe/Größe Matrix

Struktur;

Produkt hat Farben
Farbe hat Bilder, Größen (L, XL)
Größe hat Aktien (5 Aktienanzahl)

Was ich tun;

Produkt -> Id, Namen, Preis, Aktiv, Farben (Color.id), Bilder (ProductImage.id), Stocks (ProductStock.id), Bestellen

Product_color -> product_id, color_id

Farbe -> Id, Namen

Product_ProductImage -> product_id, product_image_id

Produktbild -> Id, Url, thumbUrl, Color (Color.id), Bestellen

Product_ProductStock -> product_id, product_stock_id

ProductStock -> Id, Graf, Color (Color.id), Größe (Size.id)

Größe -> Id, Namen

Ich habe sie alle in der Produkttabelle, weil ORM (Wasserlinie), damit eine Ebene verbindet.

Fragen

1- Was denken Sie über mein Design?
2- Was sind Vor- oder Nachteile?
3- Was würden Sie tun?

Vielen Dank.

+0

Es wäre hilfreich, wenn Sie die Create-Tabellenanweisungen mit Fremdschlüsselbeziehungen ausschreiben würden. Die Art, wie es geschrieben ist, kann zu vielen Annahmen des Lesers führen. – Brad

+0

Ich habe Beziehungen hinzugefügt. Ich werde Tabellenerstellungsanweisungen hinzufügen. – frauzer

Antwort

1

Ich sehe ein paar Probleme.

  1. Sie haben hier keine Einschränkungen, die Produkt A mit 3 Größen und Produkt B mit 4 Größen betreffen können. Wenn ich es wäre, würde ich eine product_size-Tabelle mit einem Mapping hinzufügen, um das zu beschränken. Wenn sie im Moment immer gleich sind, können Sie sie einfach automatisch ausfüllen, aber wenn sie auseinander gehen (und in der realen Welt werden sie auseinander gehen), können Sie richtig damit umgehen.

  2. Nach meiner Erfahrung funktioniert Lager am besten mit einem Append-only-Ansatz, so dass Sie in der Lage sein müssen, Bewegungen und Bewegungen aus zu handhaben.Ich sehe nichts falsch mit Ihrer Diskussion hier, aber Sie wollen wahrscheinlich auf eine Konvention wie + für in und ab, und fügen Sie einen Zeitstempel.

Verwandte Themen