sql - 数据库复合主键中的顺序是否重要?
问题描述
我最近提出了以下问题:数据库主键中的顺序重要吗?
即如果我有一个 R(a,b,c,d,e) 关系并且我将 (a,b) 作为复合主键,那么 (b,a) 是否考虑相同的主键?
作为后续:如果 R(a,b,c,d,e) 是关系并且 (a,b,c) 是主键,则 (a,b,c,d,e) 和 (a, b,c,e,d) 被认为是相同的还是不同的超级键?
解决方案
这取决于你的目标。如果您只需要强制唯一性,则顺序无关紧要,因此密钥(a, b)
将具有相同的效果(b, a)
。
如果您想使用将建立键的索引,您将不会得到相同的结果,因为(a, b)
它将允许您a
按升序和降序排序,并且仅在b
升序排序之后,而如果您想排序,b
那么您根本无法使用索引。
推荐阅读
- azure-devops - Azure Webjobs app.config 发布转换
- firebase - Cloud Firestore 安全规则只允许从 Firebase 函数写入
- arrays - 在 VBA 中组合多个数组
- python - NGC / Nvidia GPU coud 的解决方法
- version-control - 如何撤消 hg 推送
- r - 为什么 .Traceback 将长字符串分成两部分?
- python - Tkinter 搜索:需要搜索每个文本小部件
- php - Symfony:在渲染模板期间抛出异常(“注意:数组到字符串的转换”)。当我尝试将类添加到标签时
- elasticsearch - 在弹性搜索中传递多个组合查询
- c# - 使用 LINQ 进行 JOIN 和求和