sql >> Database teknologi >  >> RDS >> Mysql

Designdatabase for kategori, underkategori og tilhørende bøger

Der er ingen grund til at have mere end én tabel for "kategorier", uanset om det er en kategori på øverste niveau eller en underkategori. De er alle bare "kategorier".

Så hav en enkelt tabel kaldet "kategorier", med et parent_id felt:

// categories table
id
name
user_id
parent_id

Når du vil trække alle kategorier på øverste niveau, skal du bare køre din forespørgsel mod categories tabel med en betingelse, at parent_id er nul.

Når du derefter vil trække underkategorier, skal du bare køre forespørgslen mod categories tabel med en betingelse, at parent_id = 123 (eller hvad som helst).

Dette holder ikke kun alting meget renere, men det giver også mulighed for udvidelse, hvis du vil fortsætte med at tilføje under-under-under-underkategorier...osv.

En anden mulighed er at bruge CakePHP's TreeBehavior .

Jeg bruger personligt hellere den måde, jeg foreslog ovenfor, men det er måske bare, fordi jeg ikke har taget mig tid til virkelig at forstå denne adfærd nok.



  1. Forståelse af MyISAM-poststruktur

  2. SQLiteException:Ugenkendt token ved læsning fra database

  3. mysql vælg sum gruppe efter dato

  4. Oracle DROP TABEL HVIS FINDER Alternativer