conception schema BDD

conception schema BDD - SQL/NoSQL - Programmation

Marsh Posté le 06-02-2008 à 09:57:59    

Bonjour,

 

j'ai un petit problème de conception.

 

Prenons les 3 tables suivantes :

 

Photo (pho_id, titre, date)
Article (art_id, titre, texte)
Commentaire (com_id, texte)

 


Je voudrais associé à un article ou à une photo un commentaire, je voudrais donc savoir si faire :

 

Photo (pho_id, titre, date)
Article (art_id, titre, texte)
Commentaire (com_id, texte, type_com, #ref_id)

 

avec type_comm = 1 pour un commentaire de photo, et type_comm = 2 pour un commentaire d'article. ref_id correspondant alternativement à un pho_id ou à un art_id selon le type de commentaire.

 

Avec à la rigueur une table supplémentaire pour gérer les types.

 


Ou alors suis je obligé de faire une table commentaire_photo et une autre commentaire_article ?

 

Merci d'avance


Message édité par vichenze le 06-02-2008 à 10:44:07
Reply

Marsh Posté le 06-02-2008 à 09:57:59   

Reply

Marsh Posté le 06-02-2008 à 10:18:25    

tout dépend des cardinalités des relations entre tes entités.
un article correspond-t-il toujours à une et une seul photo ?
un commentaire correspond-t-il à une ou plusieurs photos ?
tu fais le travail de l'ordinateur en devinant le modèle physique de tes données.
fait un modèle conceptuel auparavant.

Reply

Marsh Posté le 06-02-2008 à 10:42:48    

merci pour ta réponse
 
Alors tout d'abord article et photo sont des tables complètement indépendantes.
 
Ensuite un commentaire commente un et un seul article OU une et une seule photo.
Un article peut avoir entre 0 et n commentaires, et une photo peut avoir entre 0 et n commentaires.
 
 
La question est donc puis-je faire 1 seule table commentaire ou faut il que je fasse une table commentaire pour photo et une table commentaire pour article ?

Reply

Marsh Posté le 11-02-2008 à 11:23:14    

oui, tu peux faire comme ça.
la seule limitation, c'est que tu ne pourras pas déclarer de foreign key dans la base, car aucun moteur d sgbd ne sait gérer ça automatiquement.
 
ensuite, tu peux toujours faire un trigger si tu veux vraiment t'assurer de la cohérence des données lors de leur modification.

Reply

Marsh Posté le 13-02-2008 à 09:38:04    

Petite suggestion :  
Tu peux aussi modifier ta table commentaire de la façon suivante :  
Commentaire (com_id, texte, pho_id,art_id).
Comme ça, tu peux déclarer des clés étrangères sur la table photo et article.
Comme tu auras toujours pho_id ou art_id null, tu pourras facilement en déduire le type de ton commentaire ( et tu te passe de ta table type).
 
Cette solution marche seulement si tu es sur de n'avoir, dans le futur, aucun autre type de commentaire possible, parce que ce n'est pas hyper évolutif.

Reply

Marsh Posté le 13-02-2008 à 10:28:59    

mouais, c'est de la dénormalisation, mais effectivemet l'astuce peut s'avérer intéressante :jap:
 
(ceci dit, pour ce genre de trucs, moi je suis pas fan, je préconise plutôt l'inverse : dénuer le plus de sens possible le modèle des données)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed