Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbankmodellierung:Wie kategorisiert man Produkte wie Amazon?

Natürlich wird es skalieren. Das wird gut funktionieren, es ist eine häufig verwendete Struktur.

Fügen Sie eine level_no hinzu . Das hilft beim Code, aber noch wichtiger ist, dass Duplikate ausgeschlossen werden müssen.

Wenn Sie eine wirklich straffe Struktur wollen, brauchen Sie so etwas wie das Unix-Konzept der Inodes.

Möglicherweise haben Sie Schwierigkeiten, den Code zu verstehen, der zum Erstellen der Hierarchie erforderlich ist, z. B. von einem product , aber das ist ein anderes Thema.

Und bitte ändern

  • (product_category )) id zu product_category_id
  • (product id zu product_id
  • parent_id zu parent_product_category_id

Antworten auf Kommentare

  1. level_no . Schauen Sie sich dieses Datenmodell an, es ist für eine Verzeichnisbaumstruktur (zB das FlieManager Explorer-Fenster):

    Verzeichnisdatenmodell

    Sehen Sie, ob Sie es verstehen können, das ist das Unix-Inode-Konzept. Die Dateinamen müssen innerhalb des Knotens eindeutig sein, daher der zweite Index. Das ist eigentlich vollständig, aber einige Entwickler werden heutzutage einen Rausch bekommen, wenn sie den Code schreiben, der zum Navigieren in der Hierarchie, den Ebenen, erforderlich ist. Diese Entwickler benötigen eine level_no um zu identifizieren, mit welcher Ebene in der Hierarchie sie es zu tun haben.

  2. Empfohlene Änderungen. Ja, es heißt Good Naming Conventions. Ich bin strikt darin und veröffentliche es, also ist es ein Benennungsstandard. Dafür gibt es Gründe, die Ihnen klar werden, wenn Sie SQL mit 3 oder 4 Join-Ebenen schreiben; vor allem, wenn Sie auf zwei verschiedene Arten zu demselben Elternteil gehen. Wenn Sie SO suchen, werden Sie viele Fragen dazu finden; immer die gleiche antwort. Es wird auch im nächsten Modell hervorgehoben, das ich für Sie schreibe.