sql >> Base de Datos >  >> RDS >> Mysql

Base de datos de diseño para categoría, subcategoría y libros asociados

No hay razón para tener más de una tabla para "categorías", ya sea una categoría de nivel superior o una subcategoría. Son solo "categorías".

Entonces, tenga una sola tabla llamada "categorías", con un parent_id campo:

// categories table
id
name
user_id
parent_id

Cuando desee extraer todas las categorías de nivel superior, simplemente ejecute su consulta en las categories tabla con la condición de que parent_id es nulo.

Luego, cuando desee obtener subcategorías, simplemente ejecute la consulta en las categories tabla con una condición que parent_id = 123 (o lo que sea).

Esto no solo mantiene todo mucho más limpio, sino que también permite la expansión en caso de que desee continuar agregando categorías sub-sub-sub-sub... etc.

Otra opción es usar TreeBehavior de CakePHP .

Personalmente, prefiero usar la forma en que sugerí anteriormente, pero podría deberse a que no me he tomado el tiempo suficiente para comprender realmente este comportamiento.