【发布时间】:2016-02-28 21:50:34
【问题描述】:
假设我们有两张桌子。一种是看电影的。电影表包含电影名称、发行年份以及主演的字段。另一张桌子是给主要演员的。它包含演员姓名和出生日期的字段。
出生日期字段取决于姓名字段。使用演员全名作为主键有意义吗?如果性能不是问题怎么办?
【问题讨论】:
-
主键必须是唯一的,演员姓名不能保证这一点。
-
此外,众所周知,演员会不时更改姓名,并且 PK 值不应在数据的整个生命周期内更改。
-
即使排除已经提出的独特性问题(这应该足以劝阻您),您为什么要这样做?
-
少一个字段,简单地说。我可能应该问一个只有一个字段的表,比如一个流派。假设由于某种原因,必须将其制成单独的表。
-
如果您要使用名称执行此操作,则“actors”表中会少一个(通常为 4 字节)int 字段,但最终会得到两个(大得多的)char 或 varchar 字段在每个必须引用参与者的表中。就该流派表而言,您可以在电影表中只包含一个 varchar 字段,但是每当您想发布当前注册流派的列表时,您都需要
select distinct genre from movies......这可能会产生多个(错误) 拼写也更难管理。