MySQL规范化,当列依赖于2列时,其中正好有一列为空

MySQL规范化,当列依赖于2列时,其中正好有一列为空,mysql,rdbms,database-normalization,Mysql,Rdbms,Database Normalization,在Person表中,Citizen_IdentityID或外国人工作许可证将为空 个人ID保存公民ID或外国人工作许可证的值(以不为空的为准) 换句话说,个人ID取决于公民ID或外国人工作许可证的值 我应该如何构建规范化设计 上述实体只是实际用例的简单替换。您只需创建一个表person 有下列栏目的 id int auto increment citizen_id int workpermit_id int name varchar 因此,每当需要在citizen\u id或workpermi

Person
表中,
Citizen_IdentityID
外国人工作许可证
将为空

个人ID
保存
公民ID
外国人工作许可证
的值(以不为空的为准)

换句话说,
个人ID
取决于
公民ID
外国人工作许可证的值

我应该如何构建规范化设计


上述实体只是实际用例的简单替换。

您只需创建一个表
person

有下列栏目的

id int auto increment
citizen_id int
workpermit_id int
name varchar

因此,每当需要在
citizen\u id
workpermit\u id
之间使用一个id时,您只需通过起诉
isnull()

来检查它是否存在,但我有其他属性,它们仅依赖于
id
,例如
IDColor
。我该如何规范化它?这是数据库子类型的反模式。你用谷歌搜索过你的头衔吗?关于“标准化”,您的参考是什么?关于规范化空值,它说了些什么?当存在空值时,您是否在谷歌上搜索过规范化?如果NULL只是另一个值,您将如何规范化?你为什么没提到FDs?FKs与规范化有什么关系吗?PS你的头衔不是你的问题。请用谷歌搜索你的实际问题和标签的许多清晰、准确的具体措辞。如果你还需要问,用其中一个短语作为标题。(你还应该如何研究你的问题或标题?)?编辑标题。用谷歌搜索你的标题和我的第一句话。请回应我之前的评论。编辑你的标题只是其中的一小部分。在做了一大堆其他的事情之后,我在谷歌上搜索了“数据库如何使用空值进行规范化”,我的第三个目标是SO,它有一个答案。(但我怀疑你是否真的想问任何关于正常化的问题。)