asc*_*bol 16 sql database-design
我有一个包含多个表的SQL数据库:A,B,C,D.这些表中的实体是完全不同的东西,具有不同的列,以及它们之间的不同类型的关系.
然而,它们都有一个共同点:在这种情况下,对评论系统的需求将具有相同的结构:author_id,date,content等.
我想知道哪种策略最适合这种模式使用A,.. D表使用注释系统.在一个经典的"博客"网站中,我会在"评论"表中使用一对多的关系与post_id.
这看起来我需要一个A_comments,B_comments等表来处理这个问题,这看起来有点奇怪.
有没有更好的办法 ?
Mar*_*tos 14
创建一个comment包含comment_id主键和注释的各种属性的表.
另外,创建A_comment如下:
CREATE TABLE A_comment (
comment_id PRIMARY KEY REFERENCES comment(comment_id),
A_id REFERENCES A(A_id)
)
Run Code Online (Sandbox Code Playgroud)
同样适用于B,C和D.这确保了comment所有其他表之间的参照完整性,如果直接将ID存储到A,B,C和D中,则无法执行comment.
声明A_comment.comment_id为主键可确保注释只能属于A中的一个条目.它不会阻止注释属于A中的条目和B中的条目,但是只能通过外键实现这一点.这将需要数据库级约束,我知道没有数据库支持.
这种设计也不能阻止孤立的注释,但我想不出任何方法可以在SQL中阻止这种情况,当然,除了你想要避免的事情之外:创建多个注释表.