Question

petite question: Comment devrait catégories de produits qui apparaissent dans plusieurs catégories être gérées? Est-ce une mauvaise pratique de le faire du tout?

Infos générales: Nous avons une base de données de produits avec des catégories aime ceci:

Products

  -Arts and Crafts Supplies
    -Glue
    -Paper Clips
    -Construction Paper


  -Office Supplies
    -Glue
    -Paper Clips

Notez que les clips de colle et de papier sont attribués aux deux catégories. Et bien qu'ils apparaissent dans deux endroits différents dans cet arbre de catégorie, ils ont la même catégorie ID dans la base de données . Pourquoi? Deux raisons:

  1. Les catégories sont les attributs affectés - par exemple, un trombone pourrait avoir un poids, un matériau, une couleur, etc.
  2. Produits affectés à la catégorie de la colle sont affichés sous les arts et l'artisanat et fournitures de bureau. Ce qui est à prévoir -. Ils sont la même catégorie réelle ID dans la base de données

Cela nous permet de gérer une seule catégorie et ses attributs et produits affectés, mais le placer à plusieurs endroits dans l'arborescence des catégories.

Nous utilisons le imbriquée modèle jeu , de sorte que le db la structure que nous utilisons pour soutenir c'est:

Category
----------
CategoryID
CategoryName


CategoryTree
------------
CategoryTreeID
CategoryID
Lft
Rgt

Alors il y a un 1:. M entre les catégories et CategoryTree car il peut y avoir plusieurs instances d'une catégorie donnée dans l'arborescence des catégories

Yat-il un moyen plus simple de modéliser ce qui permettrait à une catégorie de produits à afficher dans plusieurs catégories?

Était-ce utile?

La solution

Je ne vois rien de mal à cela aussi longtemps qu'il est vrai que tous colle convient pour les fournitures de bureau et fournitures d'artisanat.

Autres conseils

Qu'est-ce que vous avez est une bonne façon, mais pourquoi ne pas simplifier la 2ème table comme ceci:

Catégorie

ID Nom

Sous-catégorie

ID CategoryID SubCategoryID

Bien que pour l'avenir, je méfiez-vous de partager les catégories d'enfants entre les deux catégories de racines. Parfois, il est préférable de créer une catégorisation unique de produits de cohérence, ce qui est plus facile à gérer pour vous et potentiellement plus facile à naviguer pour le client. Sinon, vous avez la question que si vous êtes sur la page de colle provenant de fournitures de bureau, puis vous montrer l'autre chemin aussi bien? Sinon, vous aurez deux pages identiques, à l'exception de la voie, ce qui est un problème pour le référencement. Si vous le faites, l'utilisateur peut se confondre.

L'exemple le plus célèbre est Google Mail, où le classement se fait de cette façon. Google est célèbre pour la facilité d'utilisation de leurs produits ...

Je crois que d'autres termes sont préférables au mot « parent », qui suggèrent en fait que la relation XToOne ...

Peut-être que vous pourriez dire qu'un Product autant Categories, de sorte que la relation serait ManyToMany. Et que l'écran serait commence par catégories pour atteindre les produits ...


soulignerait un problème: si vous ne limite pas le nombre de catégories, et vous afficher les catégories avec des sous-catégories et ainsi de suite, vous pourriez vous retrouver avec:

  • un énorme catégories et la liste des produits, avec beaucoup de beaucoup de duplications
  • une grande profondeur (probablement illisible)

La partie intéressante met en avant le problème, puis d'imaginer une solution qui est très bien pour l'utilisateur final.

Il peut être nécessaire pour une catégorie d'avoir plusieurs parents. Cependant, peu importe quel parent vous avez trouvé une catégorie sous, ses sous-catégories devraient rester les mêmes.

J'ai vu des systèmes réels mis en œuvre précisément cette logique et a bien fonctionné.

modifier

Pour répondre à votre question, je ne pense pas que le modèle que je suggère est aussi restrictive que vous l'imaginez. En gros, une branche de l'arbre peut être trouvée dans plus d'une branche mère, mais partout où il se trouve, il a les mêmes enfants. Rien sur cela vous empêche de picorage des enfants d'une branche et aussi les enfants qui les rend d'une autre.

Ainsi, par exemple, vous pouvez inclure la catégorie des colles dans les fournitures de bureau et de fournitures de passe-temps, et si vous avez ajouté « Crazy Glue (suppositoire Edition) » sous colles, il apparaîtrait à la fois. Si vous avez des éléments qui pourraient être regroupés de façon logique, mais doivent être séparés par leur utilisation, vous pouvez toujours le faire. Vous pouvez mettre mucilage et coller dans la catégorie des adhésifs passe-temps, qui passe sous la racine de passe-temps, mais pas sous la racine de bureau. Ou vous pouvez le faire et ont en même temps une catégorie combinée qui est utilisée en interne par vos acheteurs. Ce que vous ne pouvez pas faire est oublier d'inclure ce nouveau type de colle dans toutes les catégories pertinentes une fois que vous l'avez ajouté où il appartient dans votre ontologie modèle d'affaires.

En bref, vous perdez très peu avec cette restriction, mais gagner un peu de structure pour éviter le problème d'avoir à gérer chaque élément individuellement.

modifier

En supposant que je l'ai fait un argument convaincant pour le modèle lui-même, il y a encore la question de la mise en œuvre. Il y a beaucoup d'options, mais voici une façon d'aller:

Il y a une table de CatalogItem contenant une clé primaire synthétique, l'étiquette, la description facultative / texte en détail, et une option SKU (ou équivalent). Vous avez alors beaucoup à plusieurs CatalogItemJoin avec ID enfant et parent de, les deux parties contraint à CatalogItemTable.

Un élément qui apparaît en tant que parent est une catégorie, donc il ne devrait pas avoir un SKU. Un élément qui apparaît seulement comme un enfant est un produit, il doit donc avoir un SKU. Il est très bien pour tout élément d'avoir plus d'un parent; cela signifie simplement qu'il est dans plusieurs catégories. De même, il n'y a pas de problème avec les enfants par plusieurs parents; ce serait le cas typique d'une catégorie avec quelques produits en elle. Toutefois, étant donné l'ID d'une catégorie, ses enfants seront les mêmes quelle que soit la catégorie parent qui vous a amené là-bas. L'autre contrainte est que vous voulez éviter les boucles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top