我有活动和照片,然后评论两者.现在,我有两个评论表,一个用于与事件相关的评论,另一个用于照片评论.架构与此类似:
CREATE TABLE EventComments ( CommentId int,EventId int,Comment NVarChar(250),DateSubmitted datetime ) CREATE TABLE PhotoComments ( CommentId int,PhotoId int,DateSubmitted datetime )
我的问题是我是否应该将它们组合起来,并添加一个单独的交叉引用表,但我想不出有办法正确地做到这一点.我觉得这应该没事,你有什么想法?
编辑
根据沃尔特的回答(以及一些轻读),我想出了这个:
CREATE TABLE Comments ( CommentId int,DateSubmitted datetime CONTRAINT [PK_Comments] PRIMARY KEY ( CommentId ) ) CREATE TABLE EventComments ( CommentId int,EventId int ) CREAT TABLE PhotoComments ( CommentId int,PhotoId int ) ALTER TABLE EventComments ADD CONSTRAINT FK_EventComments FOREIGN KEY (CommentId) REFERENCES Comments(CommentId) ALTER TABLE PhotoComments ADD CONSTRAINT FK_PhotoComments FOREIGN KEY (CommentId) REFERENCES Comments(CommentId)
结构之间是否存在任何性能差异?对我来说,这似乎有点偏好.我确实看到了第二个模式的好处,如果我想为事件评论或照片评论添加一些特异性,我有一个单独的表来做,如果我想要两者共享一个新的属性,有一个表到添加新属性.