Ich mache ein E-Commerce-Projekt und bin verwirrt über das Datenbankdesign für die Speicherung von Produkten. Es gibt 3 Möglichkeiten, über die ich spekuliert habe, dass die Datenbank erstellt werden kann:
1. Es kann separate Tabellen für jede Produktkategorie geben.
%Vor%2. Gruppiere alle Produkte in einer Tabelle und erlaube, dass einige Werte null sind
%Vor%3. Gruppieren Sie ähnliche Spaltenfelder in einer Tabelle namens products, und stellen Sie separate Tabellen für bestimmte Daten bereit.
%Vor%Ich würde wirklich die Erleuchtung zu schätzen wissen, danke
Ich gehe davon aus, dass ein Produkt zu vielen Kategorien gehören kann und eine Kategorie (offensichtlich) viele Produkte enthält. Diese Beziehung wird als Viele-zu-Viele-Beziehung bezeichnet.
In diesem Fall hätten Sie drei Tabellen: categories
, products
und categories_products
. Die ersten beiden Tabellen sind selbsterklärend. Die dritte Tabelle speichert eine Beziehung zwischen den beiden mit zwei Fremdschlüsseln. Die Tabellen würden so aussehen:
Offensichtlich sind dies die Tabellenschemas in ihrer einfachsten Form. Sie müssen Ihre zusätzlichen Spalten zur Tabelle categories
und products
hinzufügen - ich habe nur die Spalten einbezogen, die für die Beziehung relevant sind.
BEARBEITEN: Ich habe auch eine parent_id
-Spalte zur Tabelle categories
für Verschachtelungskategorien hinzugefügt. Es ist im Allgemeinen eine schlechte Idee, eine separate sub_categories
-Tabelle zu erstellen - was passiert, wenn Sie eine Unterkategorie zu einer Kategorie auf oberster Ebene machen wollen? Oder umgekehrt? Du bist aus Mangel an einem besseren Ausdruck buggered.
Ich denke, es hängt von den Produkten ab, die Methode 1 oder 2 zu verwenden. Ich würde niemals Methode 3 verwenden.
Wenn Ihre Produkte komplett anders sind wie Bücher, Parfüms und Kleidung, würde ich Methode 1 verwenden
Eine Nebenbemerkung: Warum sollten Sie zwei Tabellen für Ihre Kategorien verwenden? Verwenden Sie eine Tabelle und fügen Sie eine Spalte Parent_ID hinzu, damit Sie in Zukunft unbegrenzte Unterkategorien verwenden können.
zum Beispiel:
%Vor%Tags und Links mysql relational-database e-commerce