sql >> Databasteknik >  >> RDS >> Mysql

Designdatabas för kategori, underkategori och tillhörande böcker

Det finns ingen anledning att ha mer än en tabell för "kategorier", oavsett om det är en kategori på toppnivå eller en underkategori. De är alla bara "kategorier".

Så, ha en enda tabell som heter "kategorier", med ett parent_id fält:

// categories table
id
name
user_id
parent_id

När du vill dra alla kategorier på toppnivå kör du bara din fråga mot categories tabell med ett villkor som parent_id är null.

Sedan, när du vill dra underkategorier, kör bara frågan mot categories tabell med villkoret parent_id = 123 (eller vad som helst).

Detta håller inte bara allting mycket renare, utan det möjliggör även expansion om du vill fortsätta lägga till sub-sub-sub-sub-subkategorier...etc.

Ett annat alternativ är att använda CakePHP's TreeBehavior .

Jag personligen använder hellre sättet jag föreslog ovan, men det kan bero på att jag inte har tagit mig tid att verkligen förstå detta beteende tillräckligt.



  1. Uppdatera alla värden i en kolumn till gemener

  2. Kan relationsdatabas skalas horisontellt

  3. mysql välj lägsta pris från multi select

  4. Redbean O/RM lagra datum som varchar(255)?