mysql - 使用全名作为主键与创建附加字段

标签 mysql relational-database

假设我们有两个表。一种是用于电影。电影表包含电影名称、发行年份以及主演的字段。另一张 table 是给主演的。它包含 Actor 姓名及其出生日期的字段。

出生日期字段取决于姓名字段。使用 Actor 全名作为主键有意义吗?如果性能不是问题怎么办?

最佳答案

通常,使用名称字段(甚至全名字段)作为主键根本没有任何意义。这是因为您想要在现实世界中对数据库进行建模,而在现实世界中,人们的名字并不唯一。

现在,也许20世纪的美国电影 Actor 都有独特的名字。但这是一个意外,而不是现实。

在图书馆学领域,诸如 Actor 姓名之类的列表被称为“受控词汇表”。如果您想了解经过几个世纪的经验得出的做此类事情的方法,那么值得一看。

要在 DBMS 中实现受控词汇表,您可以使用带有(自动增量)id 号的表。您可以将该人的姓名放在第二列中,将出生日期放在另一列中,等等。如果该人有别名(例如“Prince”、“The Artist Previously Known As Prince”和“TAFKAP”),您可以将其您的词汇表中可能包含别名表。这将包含成对的 ID 号。

(请注意,甚至美国的社会保障号码也不是唯一的。社会保障管理局曾经犯过发布社会保障卡图片的错误;很多人使用该卡上显示的号码。)

不用担心性能。即使附加了 ID 号,电影 Actor 的总数(算上群众 Actor 、替身 Actor 和特技 Actor )也完全在小型 DBMS 系统的能力范围之内。

关于mysql - 使用全名作为主键与创建附加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927809/

相关文章:

java - 让MySQL自动刷新

PHP - 如何适应时区

php - 如何使用 java 将长 blob(图像)上传到 mysql 数据库并在 php 中检索?

mysql - MySQL 查询中更复杂的 IF 语句

mysql - 为自动删除订阅系统构建表

ms-access - 查找与关系 Microsoft Access

PHP:循环数组/字符串生成器或其他内容的最快方法

object - Salesforce 对象和标准化

mysql - 考试重新标准化歌曲(singerID、singerName、songID、歌曲名称、歌曲长度、歌曲流派)

MSSQL : the KEY keyword? 中的 MySQL CREATE 语句