sql-server – 当两个表非常相似时,它们何时应该组合在一起?
发布时间:2020-12-12 07:30:22 所属栏目:MsSql教程 来源:网络整理
导读:我有活动和照片,然后评论两者.现在,我有两个评论表,一个用于与事件相关的评论,另一个用于照片评论.架构与此类似: CREATE TABLE EventComments( CommentId int,EventId int,Comment NVarChar(250),DateSubmitted datetime)CREATE TABLE PhotoComments( Commen
我有活动和照片,然后评论两者.现在,我有两个评论表,一个用于与事件相关的评论,另一个用于照片评论.架构与此类似:
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) 结构之间是否存在任何性能差异?对我来说,这似乎有点偏好.我确实看到了第二个模式的好处,如果我想为事件评论或照片评论添加一些特异性,我有一个单独的表来做,如果我想要两者共享一个新的属性,有一个表到添加新属性. 解决方法评论,PhotoComments和EventComments以称为“泛化专业化”的模式相关.此模式由面向对象语言中的简单继承处理.设置一个可捕获相同模式的表模式会更复杂一些.但它很好理解.快速谷歌搜索“泛化专业化关系建模”将给你几个关于这个主题的好文章. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |