Mysql
 sql >> база данни >  >> RDS >> Mysql

Проектиране на база данни за категория, подкатегория и свързани книги

Няма причина да имате повече от една таблица за "категории", независимо дали е категория от най-високо ниво или подкатегория. Всички те са просто "категории".

Така че, имайте една таблица, наречена "categories", с parent_id поле:

// categories table
id
name
user_id
parent_id

Когато искате да изтеглите всички категории от най-високо ниво, просто изпълнете заявката си срещу categories таблица с условие, че parent_id е нула.

След това, когато искате да изтеглите подкатегории, просто стартирайте заявката срещу categories таблица с условие, че parent_id = 123 (или каквото и да е).

Това не само поддържа всичко много по-чисто, но също така позволява разширяване, в случай че искате да продължите да добавяте под-под-под-под-категории... и т.н.

Друга възможност е да използвате CakePHP TreeBehavior .

Аз лично предпочитам да използвам начина, който предложих по-горе, но може би просто защото не съм отделил достатъчно време, за да разбера наистина това поведение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySQL заявка за дължина и ширина за други редове в радиус от x мили

  2. SQLSTATE[HY000] [1045] Достъпът е отказан за потребител 'username'@'localhost' с помощта на CakePHP

  3. Преместването на данни от EBS в ефимерно хранилище ще подобри ли производителността на MySQL заявки?

  4. Съхранена процедура с незадължителни параметри WHERE

  5. неинициализирана константа MysqlCompat::MysqlRes (с помощта на mms2r gem)