【发布时间】:2012-08-17 12:03:40
【问题描述】:
我有一张名为 Player 的桌子
- 玩家 ID (PK)
- 更多栏目
我想创建另一个与名为 PlayerExtraInfo 的播放器具有 1 对 1 关系的表以包含一些列。所以我有几个选择:
不创建新表,而是将 PlayerExtraInfo 列添加到 Player 表
-
创建 PlayerExtraInfo 表并在 Player 表中有一个 FK。
播放器表
- 玩家 ID (PK)
- 更多栏目
- PlayerExtraInfoID (FK)
PlayerExtraInfo表格
- PlayerExtraInfo (PK)
- 更多栏目
-
相反:PlayerExtraInfo 包含一个 FK 到 Player 表。为了确保关系保持 1 对 1,我添加了一个唯一约束。
播放器表
- 玩家 ID (PK)
- 更多栏目
PlayerExtraInfo表格
- PlayerExtraInfo (PK)
- 更多栏目
- PlayerID(FK,唯一)
-
类似于选项 3,但将 PK 和 FK 合二为一。在这种情况下,我的外键也成为主键:
播放器表
- 玩家 ID (PK)
- 更多栏目
PlayerExtraInfo表格
- 玩家 ID(PK、FK)
- 更多栏目
我知道选项 1、2 是正确的,但由于性能问题,我是选项 3 或 4 的选项。考虑到这 3 和 4 选项,我对选项 4 产生了一些疑问: 所以我的问题是:
- 选项 3 和 4 是否正确?
- 选项 4 会破坏任何正常形式吗?
- 还有其他我没有想到的选择吗?
【问题讨论】:
标签: sql database-design foreign-keys foreign-key-relationship