Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Banco de dados de design para categoria, subcategoria e livros associados


Não há motivo para ter mais de uma tabela para "categorias", seja uma categoria de nível superior ou uma subcategoria. Eles são apenas "categorias".

Portanto, tenha uma única tabela chamada "categories", com um parent_id campo:
// categories table
id
name
user_id
parent_id

Quando você quiser extrair todas as categorias de nível superior, basta executar sua consulta nas categories tabela com uma condição que parent_id é nulo.

Então, quando você quiser extrair subcategorias, basta executar a consulta nas categories tabela com uma condição que parent_id = 123 (como queiras).

Isso não apenas mantém tudo muito mais limpo, mas também permite a expansão caso você queira continuar adicionando sub-sub-sub-sub categorias... etc.

Outra opção é usar o TreeBehavior do CakePHP .

Pessoalmente, prefiro usar a maneira que sugeri acima, mas pode ser porque não tive tempo para realmente entender esse comportamento o suficiente.