数据库设计表具有多种关系

时间:2015-10-13 09:37:38

标签: database-design foreign-key-relationship

我正在进行数据库设计,其中表链接到一个或另一个表,产生总共5个关系。如果表链接到表1,则指向其他4个表的链接为NULL。如果我用了5把外国钥匙,结果我会买一块瑞士奶酪!

我有桌子"中心"与地区或州,部门,村庄或城市相关联。如果中心属于区域,则不能再属于州/部门/村/城市。

我不能只有一个属性"中心型"这将显示该中心的链接,因为我还需要知道它与哪个区域,州等实体完全相关。

此致

RLO

2 个答案:

答案 0 :(得分:0)

你可以同时拥有属性" center-type" (它标识了您正在处理的中心类型)和id属性(让我们说" idCenter"),它们链接中心类型实例的id,以及两者的组合将告诉您中心的确切类型和链接的中心类型的实例。

中心类型和idCenter是外键(所以这样你就有2个FK而不是5个。)

编辑:实际上这个答案有冗余。最好为每个不是中心的表创建一个FK。例如,表区将具有以下属性:

disctrict(id_district,id_center,...)。

表村将是:

village(id_village,id_center,...)。

在所有情况下,id_center都是以FK为中心。通过这种方式,您将了解每个中心的中心类型"它属于(抛出FK)。

答案 1 :(得分:0)

在这里提出并回答了类似的问题:https://dba.stackexchange.com/questions/113122/conditional-foreign-key-relationship/114281#114281

您可以拥有的是一个中心表,其中包含乡村,城市等常见的数据。这包括中心的ID以及它所在的中心的指标:城市,州,村,区或部门。然后是每种中心的单独表格,其中PK也是FK,返回 Center 表。

因此,必须与中心有关系的所有实体都有一个FK到中心表,它告诉你它是什么类型的中心,因此哪个其他表包含有关中心的其他信息。< / p>