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

Designdatenbank für Kategorie, Unterkategorie und zugehörige Bücher

Es gibt keinen Grund, mehr als eine Tabelle für "Kategorien" zu haben, egal ob es sich um eine Kategorie der obersten Ebene oder eine Unterkategorie handelt. Sie sind alle nur "Kategorien".

Haben Sie also eine einzelne Tabelle namens "Kategorien" mit einer parent_id Feld:

// categories table
id
name
user_id
parent_id

Wenn Sie alle Kategorien der obersten Ebene abrufen möchten, führen Sie einfach Ihre Abfrage für die categories aus Tabelle mit einer Bedingung, die parent_id ist null.

Wenn Sie dann Unterkategorien abrufen möchten, führen Sie einfach die Abfrage für die categories aus Tabelle mit der Bedingung parent_id = 123 (oder was auch immer).

Dies hält nicht nur alles viel sauberer, sondern ermöglicht auch eine Erweiterung, falls Sie weitere Sub-Sub-Sub-Sub-Kategorien hinzufügen möchten ... etc.

Eine weitere Option ist die Verwendung von TreeBehavior von CakePHP .

Ich persönlich benutze einfach eher die oben vorgeschlagene Methode, aber vielleicht liegt es daran, dass ich mir nicht die Zeit genommen habe, dieses Verhalten wirklich genug zu verstehen.