2016-05-10 73 views
0

我有這個數據庫架構如下圖所示的圖像:如何使用異常創建多對多映射表?

enter image description here

這是罰款,直到我需要改變一些東西。 因此,一些國家現在在其中有分歧。每個部門可能都沒有相同的流程。

例如,德國有3個部門(Div1,Div2,Div3)。我有一些適用於所有德國的流程,有些僅適用於Div1。

我打算創建一個新的數據庫,country_division,與FF模式:

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

但後來我想會有我的process_country表中衝突,當我需要添加一個條目添加一個有分裂國家的過程。

如何重新設計我的數據庫,使其適用於所有國家?

編輯:根據您的意見,這是我創建的。請讓我知道這是否可行。

enter image description here

+1

在我看來,您需要爲國家/地區表中的部門創建新表格或創建新列。使用division_id作爲外鍵,並將process_country與divion_id而不是country_code鏈接。國家代碼不再是主鍵。 division_id將是您的主鍵和外鍵。如果你需要額外的解釋讓我知道我可以解釋更多的解決方案 – Stivan

+0

@Stivan我編輯了我的帖子,是你的意思? – dats

+0

我誤解了你的要求。您的帖子中的第二個圖將起作用。我認爲每個過程只會有一個分部與之相關聯。但是,如果每個過程可能有多個部門,則需要像您一樣完成4個表格。在Process_Country_Division表中,您需要FK到國家代碼。它已經與分區表相關聯。 – Stivan

回答

0

enter image description here

在您的圖表你不需要從Process_Country_Division鏈接到Country表。 Country表已經鏈接到Division表中。 基於此圖,您可以將多個進程鏈接到多個部門。

1

了我的頭頂部,不知道您的所有要求,有兩種選擇。您可以讓所有國家至少包含一個部門(對於實際上沒有部門的國家/地區的默認部門),然後在所有情況下將您的流程與部門相關聯。這是我通常會傾向的方法。

另一種選擇是讓您的鏈接表包含一個division_id,但使其能夠NULL成爲可能並且將分割和國家的FK分開。然後,對於沒有分區的國家/地區,其鏈接表中的進程下方的進程只需division_idNULL值。