2011-03-20 106 views
2

我有涉及實體的多對多關係:部門和範圍。數據庫設計問題

1)部門。 (進口,出口)
2)範圍。 (Nationwide,International)

1部門可以與許多不同的範圍相關。一個範圍涉及多個部門。

到目前爲止,我的多對多的關係表會是這樣的:

DepartmentID的(外鍵)
ScopeId。 (外鍵)

每個部門/範圍的關係將有一個整體的配置,包括文件類型和批號等

(所以對:

部門1/1的範圍/文檔類型1
部門1 /範圍1 /文檔類型2

然後爲每個文檔類型會有一些不同的代碼:

部門1 /範圍1 /文檔類型1/COD ë1
部門1 /範圍1 /文檔類型1 /碼2

部門1 /範圍1 /文檔類型2 /代碼1
部門1 /範圍1 /文檔類型2 /碼2

所以我在具有多對多的關係表(部/範圍)思想爲:

ID(自動增加)(主鍵)
DepartmentID的
ScopeId。

這個「Id」將是另一個表中的外鍵。

這樣好嗎我在做什麼或者我是否違反了一些最佳實踐規則?

感謝

更新1
我發現,我將有許多不同的多對多關係的表。

1)定義範圍相關的各部門

標識
DepartmentID的
ScopeId涉及每個部門內的每個範圍

2)文件類型。

ID(主鍵,autoincrementable)
DepartmentScopeId(外鍵,1)
DocumentTypeId(外鍵,文檔類型)。

3)與每個文檔類型相關的代碼,屬於某個部門的範圍。

Id(主鍵,自動增量)。
CodeName(nvarchar(50))
DocumentTypeDepartmentScopeId(外鍵爲2))。

我不太確定如果我是過於複雜的事情,或者如果這是數據庫世界中的正常模式。

我這樣做後,我想我能創建一個視圖,這將幫助我在訪問數據,例如:返回所有代碼,每個文件類型,每個範圍,每部」如果我能

將是巨大的關於這是否會是去了解這個正確的方式獲得一些建議。

感謝

+0

「數據庫設計」並不意味着「在每張桌子上放置一個自動增量的ID號碼」。如果你這樣做,你幾乎可以肯定不會執行* real *限制。例如,在部門範圍的表中,必須聲明一對列{departmentid,scopeid}爲「PRIMARY KEY」或「UNIQUE」。 – 2011-03-20 13:16:10

回答

3

我也覺得這是最好的做法。您也可以在新表中添加有關關係的詳細信息(例如dateCreated會,如果這是有道理的)。另外,如果它很重要,不要忘記將這對夫婦(DeparmentId,ScopeId)設置爲獨特以避免重複分配。