我想为我的实体实现评论,评级,标签等模块。我的想法是:
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
...
这种做法是否正确?
答案 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