在一对一的关系中我应该删除表的id列之一吗?

Vla*_*lad 5 mysql database-design normalization one-to-one relational-database

MySQL中有以下2个表:Customer(Id,Firstname,Lastname ...)Bonus(Id,CustomerId,Value,...)

关系是一对一,每个客户只有一个奖金.(CustomerId在奖金表中是唯一的)

问:我应该删除奖励表的Id列吗?(我想知道为什么或为什么不)

KM.*_*KM. 4

我会删除 Bonus.Id 并让 Bonus.CustomerId 成为 PK。这样做将消除对 Bonus.CustomerId 列具有唯一约束的需要,因为它现在将是 PK。任何看桌子的人都会在没有 Bonus.Id 的情况下更清楚地看到一对一的情况。您不需要 Bonus.CustomerId 上的索引,PK 索引将是您所需要的,因此浪费的磁盘空间和内存缓存更少。另外,如果您需要 Bonus 表的 FK,则可以使用 CustomerId 值(新的 PK),该值可用于返回 Customer 或 Bonus 表,而不仅仅是 Bonus。