我有一个具有多个表的sql数据库:A,B,C,D.这些表中的实体是完全不同的东西,具有不同的列以及它们之间的不同种类的关系.
然而,他们都有一个小小的事情:在这种情况下需要一个评论系统将具有相同的结构:author_id,date,content等.
然而,他们都有一个小小的事情:在这种情况下需要一个评论系统将具有相同的结构:author_id,date,content等.
我不知道哪个策略是最好的这个模式有A,.. D表使用注释系统.在一个古典的“博客”网站中,我将在“comments”表中使用一个与一个post_id的一对多关系.
在这看来,我需要一个A_comments,B_comments等表来处理这个问题,看起来有点奇怪.
有没有更好的办法 ?
解决方法
创建一个comment_id主键和注释的各种属性的注释表.
另外,创建A_comment因此:
CREATE TABLE A_comment ( comment_id PRIMARY KEY REFERENCES comment(comment_id),A_id REFERENCES A(A_id) )
同样为B,C和D.这样可以确保注释和所有其他表之间的引用完整性,如果您在注释中直接存储ids至A,C和D,则无法执行此操作.
声明A_comment.comment_id作为主键确保注释只能属于A中的一个条目.它不会阻止注释属于A中的条目和B中的条目,但只有这么多可以实现外键;这将需要数据库级约束,我不知道数据库的支持.
这个设计也不会阻止孤立的评论,但是我不能想到在sql中阻止这一点的任何方法,除了当然要做你想避免的事情:创建多个注释表.