Database design 数据库设计;候补;带主引用的名称

Database design 数据库设计;候补;带主引用的名称,database-design,Database Design,存储实体的备用名称并将其链接到“主”记录以汇总数据的最佳做法是什么 例如,我有一份公司名单 id name 1 Orange Kid Industries 2 Apple Kid Inc. 5 O.K. 公司5 OK.是1 Orange Kid Industries的替代名称。这些公司需要谨慎地存储,这样,如果子记录需要绑定到5而不是1,(为了存储历史数据,例如,如果公司名称发生更改),它可以 我需要将5 OK.连接回1 Orange Kid Industries作为“主”记录,因此,当

存储实体的备用名称并将其链接到“主”记录以汇总数据的最佳做法是什么

例如,我有一份公司名单

id name
1  Orange Kid Industries
2  Apple Kid Inc.
5  O.K.
公司
5 OK.
1 Orange Kid Industries
的替代名称。这些公司需要谨慎地存储,这样,如果子记录需要绑定到5而不是1,(为了存储历史数据,例如,如果公司名称发生更改),它可以

我需要将
5 OK.
连接回
1 Orange Kid Industries
作为“主”记录,因此,当查看
1 Orange Kid Industries
的所有子项时,我会看到1和5的所有子项合并在一起

我倾向于使用所有记录所需的主ID。如果用户创建了一家新公司
6 Moldy Orange Kid Industries
,他可以为其分配一个主ID 1,表示这只是
1 Orange Kid Industries
的另一个名称

id name                        master
1  Orange Kid Industries       1
2  Apple Kid Inc.              2
5  O.K.                        1
6  Moldy Orange Kid Industries 1

这似乎是不需要太多冗余数据的最简单的路由。这种方法有什么缺点吗?

对我来说,这似乎是一个很好的解决方案。我唯一可能改变的想法是,如果一条记录是它自己的主记录,则将主记录保留为空。可能不是什么大问题,但似乎是一个潜在的无限循环陷阱。

我想我应该规范化数据。公司主表和公司名称表结束公司名称表,该表将具有公司主表的外键。我还将避免空值,任何基于空值的逻辑都会强制执行外键约束。空表示您不知道。

堆栈交换Q&A格式不适用于询问意见的问题。请参阅。您是否建议将公司名称同时存储在主表和名称表中?所以两个表中可能有相同的名称?