Envoyé par
CinePhil
Alors l'autre solution consiste à faire ceci :
1) Une catégorie peut être caractérisée par des propriétés et une propriété caractérise de une à plusieurs catégorie.
MCD 1 :
categorie -0,n----caracteriser----1,n- propriete
Tables :
categorie (cat_id, cat_libelle)
propriete (prp_id, prp_libelle)
cat_caracteriser_prp (ccp_id_categorie, ccp_id_propriete)
2) une annonce peut avoir des propriétés liées à sa catégorie et une propriété liée à une catégorie peut caractériser plusieurs annonces.
Là il faut transformer l'association "caracteriser" du premier MCD en entité associative :
MCD 1bis :
categorie -0,n----preciser----(1,1)- caracteristique -(1,1)----constituer----1,n- propriete
Tables :
Je change seulement la table cat_caracteriser_prp en caracteristique :
caracteristique (car_id_categorie, car_id_propriete)
Maintenant, je peut associer cette entité aux annonces :
MCD 2 :
categorie -0,n----preciser----(1,1)- caracteristique -(1,1)----constituer----1,n- propriete
annonce -0,n-----valoriser----0,n--------------|
Tables supplémentaires :
annonce (ann_id, [+ propriétés communes à toutes les annonces] )
ann_valoriser_car (avc_id_annonce, avc_id_categorie, avc_id_propriete, avc_valeur)
Mais pour une catégorie qui a 5 propriétés spécifiques et qui concerne 1000 annonces, tu auras 5000 lignes dans la table ann_valoriser_car alors qu'avec la modélisation par héritage que j'ai conseillée dans mon précédent message, tu n'auras que 1000 lignes dans la table de la catégorie. De plus, tu pourras mieux typer les valeurs des caractéristiques (entier, décimal, caractères, booléen...), lors de la modification de propriétés spécifiques d'une annonce, ce nouveau modèle va mettre à jour l'index de toutes annonces au lieu d'indexer une table plus petite.
Bref, je pense toujours que le modèle par héritage est meilleur.
Partager