0 votes

Comment construire une entité de référentiel ayant un tableau de parties ?

J'ai une entité produit qui a plusieurs classes (chaque type de produit a des champs différents avec des milliers de types de produits). Une classe de produit pourrait être un marteau dont les champs seraient "longueur du manche", "poids de la tête", etc. Une autre pourrait être une chaise avec les champs "matériau du coussin", "sommier", etc. Les clients ajoutent des champs en fonction de leurs besoins spécifiques, un peu comme des mots-clés dans un catalogue d'images. Les clients ajoutent des champs en fonction de leurs besoins spécifiques, un peu comme des mots-clés dans un catalogue d'images. Ces champs finissent par être des champs de recherche, mais nous ne voulons pas utiliser la recherche en texte simple parce que les produits auront des formulaires spécifiques qui correspondent à la catégorie de produits.

Le produit se décompose en trois types de champs : la description, l'image et le prix :

Product.Desc.HandleLength
Product.Desc.HeadWeight
Product.Image.FrontFace
Product.Price.RetailCost
Product.Price.ManufacturersSalePrice

Ce que je pourrais simplifier :

Product.Desc["HandleLength"]
Product.Desc["HeadWeight"]
Product.Image["FrontFace"]
Product.Price["RetailCost"]
Product.Price["ManufacturersSalePrice"]

Serait-il préférable que l'entité référentiel soit un objet avec trois tableaux de contenu variable ? Des idées sur une bonne façon de représenter un tel objet ? Je pensais même à une sorte de "dépôt d'usine" lol.

1voto

Quassnoi Points 191041

Si vos descriptions (ou images) peuvent être partagées entre plusieurs produits, définissez une table séparée pour elles, sinon gardez simplement HandleLength etc. comme les champs de la table principale.

Si vos propriétés dépendent fortement des produits (c'est-à-dire qu'il y a au moins dix propriétés qui ne sont pas partagées par les produits de la tous ), vous devriez envisager de créer une table de classes :

classId        parent
[Tool]         [NULL]
[Screwdriver]  [Tool]

, un tableau classe-propriété

classId        property    
[Screwdriver]  Type
[Screwdriver]  Size

et un tableau de valeurs

ItemId   classId        property    value
1        [Screwdriver]  Type        PH
1        [Screwdriver]  Size        2

Les prix ont tendance à être des dimensions qui évoluent lentement .

Vous pouvez choisir l'une ou l'autre des façons de les stocker ( type 1 , type 2 etc.), en fonction de la fréquence des changements et de vos exigences en matière de conservation de l'historique des prix.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X