【问题标题】:Database design for "alternate" names with master reference具有主参考的“备用”名称的数据库设计
【发布时间】:2012-03-13 10:22:58
【问题描述】:

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

例如,我有一个公司列表;

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

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

我需要将5 O.K. 绑定回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

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

【问题讨论】:

  • Stack Exchange Q&A 格式不适合征求意见的问题。请参阅FAQ

标签: database-design


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我想我会规范化数据。公司主表和公司名称表结束一个公司名称表,该表将具有公司主表的外键。我也会避免空值和任何基于空值的逻辑强制外键约束。 null 表示你不知道。

    【讨论】:

    • 您是否建议将公司名称同时存储在主表和名称表中?所以两个表中可能有相同的名称?
    猜你喜欢
    • 2014-08-21
    • 2022-01-03
    • 1970-01-01
    • 2011-04-01
    • 2011-05-30
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多