2009-07-28 7 views
0

Je veux implémenter des modules tels que le commentaire, la notation, l'étiquette, etc. à mes entités. Ce que je pensais:Tag, commentaire, note, etc. conception de base de données

comments_table -> comment_id, comment_text

entity1 -> entitity1_id, entity1_text

entité2 -> entitity2_id, entity2_text

entity1_comments -> entity1_id, comment_id

entity2_comments -> entity2_id, comment_id

....

Cette approche est-elle correcte?

Répondre

1

C'est plus simple que cela. Vous allez vouloir quelque chose comme ceci:

Entité: EntityID EntityText

Commentaires: CommentID AssocEntityID CommentText

Où AssocEntityID a une relation clé étrangère à la table Entité colonne EntityID.

Pour cette solution, pour obtenir tous les commentaires pour l'entité avec ID 1, vous feriez ceci:

SELECT CommentID, CommentText FROM Comments WHERE AssocEntityID = 1 
1

Non, je suggère d'avoir une seule table de entity_comments qui est une table d'intersection entre les commentaires et les entités. Vous devez avoir les identifiants entity1 et entity2 dans la table des commentaires en tant qu'attributs séparés.

il ressemblerait à ceci:

entitiy1 -> entity_comments <- comments_table 
entitiy2 -> entity_comments <- comments_table 

une sélection simple pourrait être:

select text 
    from entity1 
    , entity_comments 
    , comments_table 
    where entity1.id = entity_comments.entity1_id 
    and entity_comments.comment_id = comments_table.id 
+0

Vous dites insérer deux attributs comme entity1 ans entité2 attributs à la table entitycomments. Et si j'ai 10 entités? 10 attributs séparés et beaucoup de valeurs nulles? –

+0

puis à ce stade, vous devrez peut-être revoir entièrement la structure de votre table. Il serait désordonné de continuer à ajouter des attributs à la table d'intersection avec chaque nouvelle table d'entité. Si ce n'est qu'un seul commentaire par ligne dans l'entité, vous pouvez placer le fichier comments.id dans la table entity1 et laisser de côté la table intersect. La table d'intersection permet plusieurs commentaires par ligne entity1. – northpole

Questions connexes