如何创建具有异常的多对多映射表?

时间:2016-05-10 12:21:04

标签: mysql sql database

我有这个数据库架构,如下图所示:

enter image description here

在我需要改变一些事情之前一切都很好。 因此,一些国家现在有分歧。并且每个部门可能没有相同的流程。

对于前者,德国有3个师(Div1,Div2,Div3)。我有一些适用于所有德国的流程,有些仅适用于Div1。

我打算用ff架构创建一个新的数据库country_division:

division_country
----------------
division_id
countrycode
division_name

但是当我需要添加一个条目来向一个有分歧的国家添加一个进程时,我会想与我的process_country表发生冲突。

如何以适用于所有国家/地区的方式重新设计数据库?

编辑:根据您的评论,这就是我创建的内容。如果这样可以,请告诉我。

enter image description here

2 个答案:

答案 0 :(得分:1)

在我不知道您的所有要求的情况下,我有两个选择。您可以让所有国家/地区至少包含一个部门(对于那些实际上没有部门的国家/地区的默认部门),然后在所有情况下将您的流程链接到部门。这是我通常倾向于采用的方法。

另一个选项是让您的关联表包含division_id,但要使其NULL能够并且将分区和国家/地区的FK分开。然后,对于没有分区的国家/地区,链接表中的下方流程在该表格中只有NULL的{​​{1}}值。

答案 1 :(得分:0)

enter image description here

在您的图表上,您不需要从Process_Country_DivisionCountry表的链接。 Country表中已链接Division表。 根据此图表,您可以将多个流程链接到多个部门。