标记,评论,评级等数据库设计

时间:2009-07-28 16:00:29

标签: database tags rating comments

我想为我的实体实现评论,评级,标签等模块。我的想法是:

comments_table - > comment_id,comment_text

entity1 - > entitity1_id,entity1_text

entity2 - > entitity2_id,entity2_text

entity1_comments - > entity1_id,comment_id

entity2_comments - > entity2_id,comment_id

...

这种做法是否正确?

2 个答案:

答案 0 :(得分:1)

比这更简单。你会想要这样的东西:

实体:EntityID EntityText

评论:CommentID AssocEntityID CommentText

其中AssocEntityID与Entity表EntityID列具有外键关系。

对于此解决方案,要获取ID为1的实体的所有注释,您可以这样做:

SELECT CommentID, CommentText FROM Comments WHERE AssocEntityID = 1

答案 1 :(得分:1)

不,我建议只有一个entity_comments表,它是注释和实体之间的交叉表。您必须将一个注释表中的entity1和entity2 id作为单独的属性。

所以它看起来像:

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

一个简单的选择可能是:

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