|
|
1
3
你必须区分 primary key 和 surrogate key
除了一些特殊情况(多对多关系的关联表可以说是这种特殊情况的一个例子)。这样做的原因是,你通常需要能够(如果不是现在,那么在未来) 一贯地 第二个问题的答案是 如果你的表代表一个核心业务实体,那么OR可以从多对一的关联中引用,使用代理键可能是一个好主意;但它是 不
|
|
|
2
2
每个表中都有一个主键:) 它也有帮助 以防未来模式发生更改,并且2个值不再唯一。另外,现在内存要便宜得多,可以随意将其用作投资。 ;) |
|
|
3
1
|
|
|
4
0
有趣的是,维亚康姆物业的一位DBA曾告诉我,使用
|
|
|
5
0
您不必在每个表上都有主键,但最好有主键,因为它们在规范化的关系数据库设计中几乎总是必要的。如果你发现了一堆你认为不需要PK的表,那么你应该重新审视表的设计/布局。阅读更多关于规范化的内容 see here. 我能想到的几个场景中,你可能不需要或不希望在表上进行PK,那就是严格用于日志记录的表。(以限制写入日志和维护唯一索引的性能下降),以及在您仅存储用于通过应用程序进行测试的数据的情况下。 |
|
|
6
0
我持相反意见,如果你没有理由添加密钥,就不应该添加。如果需要,稍后添加此列非常容易。 |
|
7
0
你说你有一个外键和另一个不是唯一的列。但这两列加在一起是独一无二的吗?如果是这样,您可以在这两列上声明主键约束。 定义另一个代理键(也称为伪键——自动递增类型)很方便,因为有些人不喜欢在选择单行时引用两列。或者,他们希望可以自由地轻松更改其他列中的值,而无需更改用于寻址单个行的主键的值。 |
|
8
0
这是一种与规范化相关的技术,也是一种很好的实践。由自动递增的数字组成的密钥有很多好处:
|
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |