sql-server – 当两个表非常相似时,它们何时应该组合在一起?
发布时间:2020-05-24 03:17:23 所属栏目:MsSql 来源:互联网
导读:我有活动和照片,然后评论两者.现在,我有两个评论表,一个用于与事件相关的评论,另一个用于照片评论.架构与此类似: CREATE TABLE EventComments( CommentId int, EventId int, Comment NVarChar(250), DateSubmitted datetime)CREATE TABLE PhotoComments(
|
我有活动和照片,然后评论两者.现在,我有两个评论表,一个用于与事件相关的评论,另一个用于照片评论.架构与此类似: 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以称为“泛化专业化”的模式相关.此模式由面向对象语言中的简单继承处理.设置一个可捕获相同模式的表模式会更复杂一些.但它很好理解.快速谷歌搜索“泛化专业化关系建模”将给你几个关于这个主题的好文章. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows下使用性能监视器监控SqlServer的常见指标
- sql – tsvector上的“to_tsquery”在使用“简单”和“英文
- sql-server – Microsoft SQL Server 2014的Hibernate方言是
- SQLServer2005触发器提示其他会话正在使用事务的上下文的解
- SQL Server 的FileStream和FileTable深入示例
- sql – 如何在Microsoft Access中的不同上下文中使用VBA中的
- sqlserver禁止management studio的自动提交事务
- sql-server – coldfusion,iis7,sql server管理员有哪些日常
- mysql 删除操作(delete+TRUNCATE)
- Sql Server 删除所有表实现方法
