Imaginez un magasin avec toutes sortes de produits différents. Chaque produit a un category
avec de nombreux subcategories
. On ne peut avoir qu'une seule sous-catégorie tandis que l'autre peut avoir 3 sous-catégories. Exemple d'Amazon:Meilleure façon de créer plusieurs catégories de structure de base de données d'articles
Electronics, Computers & Office
Musical Instruments
Guitars
Electronic Guitar
Acoustic Guitar
Monitors
Computers & Tablets
Tablets
Laptops
Desktops
Gaming
Home
Work
Alors: moniteurs ont une catégorie de niveau
Electronics, Computers & Office > Monitors
comprimés deux niveaux de catégories
Electronics, Computers & Office > Computers & Tablets > Tablets
Et Guitare électronique Trois niveaux de catégorie
Electronics, Computers & Office > Musical Instruments > Guitars > Electronic Guitar
La question est quelle est la meilleure façon d'atteindre cette structure (compte tenu de la flexibilité, l'entretien, l'accessibilité, etc.)? Quelque part, j'ai vu cette structure:
Categories table
-------------------------------------------------------
| id | title | caregoty_id |
-------------------------------------------------------
| 1 | Electronics, Computers & Office | null |
| 2 | Musical Instruments | 1 |
| 3 | Guitars | 2 |
| 4 | Electronic Guitar | 3 |
| 5 | Acoustic Guitar | 3 |
| 6 | Monitors | 1 |
| 7 | Computers & Tablets | 1 |
| 8 | Tablets | 7 |
| 9 | Laptops | 7 |
-------------------------------------------------------
Comme vous pouvez le voir, il y a une seule table qui a une relation avec lui-même. Je ne sais pas si c'est la bonne façon de le faire. Dois-je aller avec cette idée ou je devrais le faire de manière plus préemptive en faisant table Categories
comme: categores1, categories2, categories3 ...
où ils ont One To Many
relation. Plus de sous-catégories plus de tables que je vais avoir. Mais je pense qu'il sera difficile d'obtenir des données de leur part parce que nous ne saurons pas combien de sous-catégories un élément a.
Ces façons sont-elles correctes? Lequel dois-je utiliser ou existe-t-il une meilleure façon de le faire? Désolé si c'est une question non pertinente. Je vous remercie!
Vous êtes sur la bonne voie, avec propre relation. Si vous utilisez une colonne pour chaque catégorie vous êtes limité à un maximum. J'utiliserais '0' pour le niveau supérieur, alors vous n'avez pas besoin d'autoriser les valeurs nulles. Vous obtenez le nombre de sous-catégories en comptant son 'id' dans' category_id' – BitAccesser
@BitAccesser bonne idée avec le 0, merci –