数据库设计挑战:一个(表)对多(表)关系?

Nic*_*ic0 6 database-design

我对 DB 很陌生,在被困住、研究和尝试不同的解决方案几天后,我转向这个社区的专业知识寻求帮助。

我想在我的 MSSQL 数据库中有一个 Person 表,它包含我们所有的联系人。将所有内容放在一张桌子上为我们下游提供了很多便利。挑战是我们必须按类别将 Company 表拆分为不同的表,因为我们需要为每个表提供不同的属性 - 例如,燃料供应商、发动机制造商和维护公司都有自己的表,列出所述类别中的公司,并具有自己的特定属性属性。

因此,我需要一种“一张表到多张表”的关系,其中各种 Company 表仅提供给 Person 表中的一个属性(“Company”)。目标是在 Person 记录中,可以从多个表中选择该人工作的公司 - 只有一家公司。

所以理想情况下是这样的: ER图

有没有办法实现这一目标或任何解决方法?

谢谢你的帮助!

Wal*_*tty 1

您的案例似乎是类/子类的实例,或者,如果您愿意,可以是类型/子类型。你提到的三种公司都是通用类公司的子类。您可以使用以下流行语来查找涉及此模式的文章:

类表继承;单表继承;共享主键;泛化 专业化;扩展实体关系

对这些流行语的搜索还会引导您在此处和 StackOverflow 中找到有关该主题的许多问题和答案。对于其中之一,请单击此处