2014-02-12 63 views
0

我有一個包含組件的表,其他工作單和其他的RepairTask。任務與組件的關係是1:N,一個任務只有一個組件。並且任務與工作訂單有1:N的關係,因爲任務只能在一個工單中。組件和工作訂單之間的關係是N:N,因爲一個工作訂單可能會影響很多組件。三元關係vs週期關係,哪個更好?

我想知道:其中一個組件修復 一個組件收到任務

工作秩序。 我在工作單中完成的任務。

爲此,我認爲有兩個選項,三個表之間的循環關係或三個表之間的三元關係。

選項1:循環關係

Components(IDComponent, ...) 
WorkOrders(IDWorkOrder, IDComponent, ...) 
Tasks(IDTask, IDComponent, IDWorkOrder, ...) 
ComponetsHasWorkOrders(IDComponent, IDWorkOrder) 

選項2:三元關係

Components(IDComponent, ...) 
WorkOrders(IDWorkOrder, ...) 
Tasks(IDTask, ...) 
CompoentsHasWorkOrdersAndTasks(IDComponent, IDWorkOrder, IDTask) 

在我設置了IDTask必須是唯一的,因爲任務只在一個工作第二種選擇訂單和一個組件。因此,通過這種方式,我確保了任務和組件之間的1:N關係,以及workOrders和Tasks之間的1:N關係。

我在這個解決方案中看到的一個問題是,如果我刪除了一個工作例如,我刪除了CompoentsHasWorkOrdersAndTasks中的記錄,所以我失去了組件和任務之間的關係。我會改變關係,並允許在主鍵的一部分的字段中爲空,所以這不是一個好主意,所以我需要一個虛構的工作順序來處理這些情況。

但我不知道三元關係還是循環關係更好。

還有其他解決方案嗎?

謝謝。

+0

是不正確的,你可以JOIN的第一款車型,並得到答案? – Randy

回答

2

說明:OrderTaskNo in Task表是一個整數;每一個OrderIDOrderTaskNo {1,2,3, ...}

enter image description here