数据库设计 – 多列主键?

前端之家收集整理的这篇文章主要介绍了数据库设计 – 多列主键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,我有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的代理键,因此“正确”的设计可能不起作用.这取决于您使用此表设计编写的代码.

猜你在找的MsSQL相关文章