我有一个表叫球员是否正确与FK有1到1的关系,这也是PK?
- PlayerID(PK)
- 多个列
我希望创建一个具有名为PlayerExtraInfo包含一个1至1关系到球员的另一个表一些专栏。所以,我有几种选择:
而不是创建新表,加PlayerExtraInfo列于表球员
创建PlayerExtraInfo表,并有一个FK的球员表。
球员表
- PlayerID(PK)
- 多个列
- PlayerExtraInfoID(FK)
PlayerExtraInfo表
- PlayerExtraInfo(PK)
- 更多列
相反:PlayerExtraInfo含有FK到播放表中。为了确保这种关系保持1比1,我添加了一个独特的约束。
球员表
- PlayerID(PK)
- 多个列
PlayerExtraInfo表
- PlayerExtraInfo(PK) 分
- 更多列
- PlayerID(FK,唯一)
类似于选项3,但混合PK和FK于一体。在这种情况下,我的外键也变成了主键:
球员表
- PlayerID(PK)
- 多个列
PlayerExtraInfo表
- 玩家ID(PK,FK)
- 多个列
我知道选项1,2是正确的,但由于性能问题,我选项选项3或4,思考这些3 4个选项中选择约4攻击我有些疑惑: 所以我的问题是:
- 是选项3,4正确吗?
- 选项4是否打破任何标准格式?
- 有没有其他的选择我没有想过?
虽然这是事实,但它往往是不成熟的优化。另一方面,如果表2中的数据并不总是需要,选项4可以是更快的解决方案。 – 2012-08-17 12:34:54
不是一个优化,是我扩展表格时的一个起点。此外,唯一的时候,选项4可以更快,然后1将插入/更新行(条件工作只完成表1)。选择时,我看不出4的速度快于1的原因。即使你选择的数据通常是1(除非你像从表中选择*一样) – 2012-08-17 12:52:19
如果你的表中有BLOB,查询即使BLOB本身不是查询列的一部分,也会变慢。另一个原因可以是类继承的映射。看到我对迭戈的帖子的评论。 – 2012-08-17 15:20:09