sql >> Database >  >> RDS >> Mysql

Ontwerp database voor categorie, subcategorie en bijbehorende boeken

Er is geen reden om meer dan één tabel voor "categorieën" te hebben, of het nu een categorie op het hoogste niveau of een subcategorie is. Het zijn allemaal "categorieën".

Zorg dus voor een enkele tabel genaamd "categorieën", met een parent_id veld:

// categories table
id
name
user_id
parent_id

Als u alle categorieën op het hoogste niveau wilt ophalen, voert u uw zoekopdracht uit met de categories tabel met een voorwaarde dat parent_id is nul.

Als u vervolgens subcategorieën wilt ophalen, voert u de query uit op de categories tabel met een voorwaarde dat parent_id = 123 (of wat dan ook).

Dit houdt niet alleen alles een stuk overzichtelijker, maar het maakt ook uitbreiding mogelijk voor het geval je door wilt gaan met het toevoegen van sub-sub-sub-subcategorieën... enz.

Een andere optie is om CakePHP's TreeBehavior te gebruiken .

Persoonlijk gebruik ik liever de manier die ik hierboven suggereerde, maar het kan zijn dat ik niet de tijd heb genomen om dit gedrag echt genoeg te begrijpen.



  1. Ik begrijp Collatie niet? (Mysql, RDBMS, Tekensets)

  2. Queryresultaten exporteren naar .csv of door tabs gescheiden bestand in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 23

  3. Hoe MySQL JSON-array naar door komma's gescheiden tekenreeksen te converteren

  4. jQuery automatisch aanvullen (op afstand) - voorbeeld