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

Database di progettazione per categoria, sottocategoria e libri associati

Non c'è motivo di avere più di una tabella per le "categorie", sia che si tratti di una categoria di primo livello o di una sottocategoria. Sono tutte solo "categorie".

Quindi, avere una singola tabella chiamata "categories", con un parent_id campo:

// categories table
id
name
user_id
parent_id

Quando vuoi estrarre tutte le categorie di primo livello, esegui la tua query sulle categories tabella con una condizione che parent_id è nullo.

Quindi, quando vuoi estrarre le sottocategorie, esegui la query sulle categories tabella con una condizione che parent_id = 123 (o altro).

Questo non solo mantiene tutto molto più pulito, ma consente anche l'espansione nel caso in cui desideri continuare ad aggiungere categorie di sotto-sotto-sottosottotitoli... ecc.

Un'altra opzione è usare TreeBehavior di CakePHP .

Personalmente uso piuttosto il modo in cui ho suggerito sopra, ma potrebbe essere solo perché non ho avuto il tempo di capire davvero abbastanza questo comportamento.