1

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!

+0

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

+0

@BitAccesser bonne idée avec le 0, merci –

Répondre

0

Constaté que Nested Set Model est la meilleure approche pour traiter les données hiérarchiques Categories model

Categories table

0

À mon avis Si nous parlons de SQL il devrait ressembler à ceci ...

Table(object): Electronics&Computers & Office 
Table(object):Musical Instruments 
    Guitars 
Table(object):Monitors 
Table(object):Computers & Tablets 
    Tablets 
    Laptops 
    Desktops 
    Table(object):Desktops 
     Gaming 
     Home 
     Work 

Totally 5 Tables (objets) .Again it'i juste mon point de vue. Sergei

+0

Et si vous voulez une 5ème sous-catégorie? Avec l'auto-référencement, vous pouvez avoir un nombre illimité de sous-catégories, sans modifications de conception. – BitAccesser