数据库设计 – 多列主键?
发布时间:2020-05-24 14:07:45 所属栏目: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的代理键,因此“正确”的设计可能不起作用.这取决于您使用此表设计编写的代码. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 增加Ms Access Insert性能
- mysql多次调用存储过程的问题
- sql-server – 当设置为CRLF时,SSIS读取LF作为终结符
- sql-server – 如果是肯定的,请汇总所有项目.如果是负数,则
- sqlserver 数据库连接字符串中的可选项收集
- t-sql/mssql用命令行导入数据脚本的SQL语句示例
- linq-to-sql – 鉴于LINQ to Entities不支持“自定义方法”
- SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
- 在SQL Management Studio中过滤的键盘方法是什么?
- .net – 如何检查LINQ to SQL连接错误
