gpt4 book ai didi

database - 复合主键或单主键

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:32 29 4
gpt4 key购买 nike

是使用单个主键更好,还是使用复合主键(通常,它们是一个主键和外键的组合)。我有以下示例:

复合主键示例:

AMeta

--- AMetaId - 主键
--- AMetaText

B元

--- BMetaId - 主键
--- AMetaID - 表 AMeta 的外键
--- B元文本

一个

--- AId - 主键
--- AMetaId - 表 AMeta 的主键和外键
--- 文本

B

--- BId - 主键
--- BMetaId - 表 BMeta 的主键外键
--- AId - 表A的主键和外键
--- 文字


单主键示例:

AMeta

--- AMetaId - 主键
--- AMetaText

B元

--- BMetaId - 主键
--- AMetaId - 表 AMeta 的外键
--- B元文本

一个

--- AId - 主键
--- AMetaId - 表 AMeta 的外键
--- 文本



--- BId - 主键
--- BMetaId - 表 BMeta 的外键
--- AId - 表 A 的外键
--- B文本

哪个数据库设计更好?

最佳答案

我通常倾向于几乎完全使用单列主键 - 要么有一个好的自然键可用(很少),要么我向表中添加一个代理 INT IDENTITY 键。

我的主要原因是:

  • 主键必须是唯一的,始终不为空
  • 默认情况下,主键是 SQL Server 中的聚簇键,它在条件列表中添加了稳定(不变)、窄(最多 4 个字节)和最好不断增加
  • 使用单列主键,我所有的外键也很容易使用单列 - 我不喜欢为了使连接工作而必须连接 3、5 甚至更多列的两个表,这是如果你有一个复合主键会发生什么

关于database - 复合主键或单主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877325/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com