加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库设计 – 多列主键?

发布时间:2020-12-12 06:39:31 所属栏目:MsSql教程 来源:网络整理
导读:例如,我有2个表,User和UserRelations,它是一对多的关系. 对于UserRelations表,我可以拥有一个标识列并使其成为主键: [RelationID] [int] IDENTITY(1,1) NOT NULL,[UserID] [int] NOT NULL,[TargetID] [int] NOT NULL, 或者我可以设计表格如下: [UserID] [in
例如,我有2个表,User和UserRelations,它是一对多的关系.

对于UserRelations表,我可以拥有一个标识列并使其成为主键:

[RelationID] [int] IDENTITY(1,1) NOT NULL,[UserID] [int] NOT NULL,[TargetID] [int] NOT NULL,

或者我可以设计表格如下:

[UserID] [int] NOT NULL,

并使UserID TargetID成为主键.

我的问题是每种设计的含义是什么,这对性能更好?

解决方法

如果您使用以前的设计,使用多余的标识列,则不会限制插入具有相同UserID和TargetID的两行.您必须在其他两列上创建UNIQUE约束,无论如何都会创建复合索引.

另一方面,一些框架(例如Rails)坚持认为每个表都有一个名为id的代理键,因此“正确”的设计可能不起作用.这取决于您使用此表设计编写的代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读