Mysql
 sql >> Base de données >  >> RDS >> Mysql

Base de données de conception pour la catégorie, la sous-catégorie et les livres associés

Il n'y a aucune raison d'avoir plus d'un tableau pour les "catégories", qu'il s'agisse d'une catégorie de niveau supérieur ou d'une sous-catégorie. Ce ne sont que des "catégories".

Donc, ayez une seule table appelée "categories", avec un parent_id champ :

// categories table
id
name
user_id
parent_id

Lorsque vous souhaitez extraire toutes les catégories de niveau supérieur, exécutez simplement votre requête sur les categories table avec une condition parent_id est nul.

Ensuite, lorsque vous souhaitez extraire des sous-catégories, exécutez simplement la requête sur les categories table avec une condition parent_id = 123 (ou autre).

Non seulement cela garde tout beaucoup plus propre, mais cela permet également une expansion au cas où vous voudriez continuer à ajouter des sous-sous-sous-sous-catégories... etc.

Une autre option consiste à utiliser CakePHP's TreeBehavior .

Personnellement, j'utilise plutôt la méthode que j'ai suggérée ci-dessus, mais c'est peut-être simplement parce que je n'ai pas pris le temps de vraiment comprendre suffisamment ce comportement.