2009-06-21 494 views
1

我正在設計一個組織圖,模型幾乎已準備就緒,並且爲了清晰起見而進行了簡化。數據庫設計問題

OrgUnit (OrgUnitId, Name, ReportsToOrgUnitId, ...) 
OrgUnitJobs (OrgUnitJobId, OrgUnitId, JobName, ReportsToOrgUnitJobId, ... ,IsJobGroup) 
Employee (EmployeeId, ........) 
OrgUnitJobEmployee (OrgUnitJobId, EmployeeId, AssignedDate, .....,) 

,所以我想知道每一個單位部門的ManagerEmployee(應該有),員工可以有一個以上的工作,但其中一人必須是主要的工作,所以我知道什麼他的經理和其他的東西。 這將支持scnese後面的一些工作流程,所以這就是爲什麼它不是一個非常簡單的組織結構圖模型。

所以你會怎麼做,你會添加屬性(IsManager屬性到OrgUnitJobs模型)或添加ManagerOrgUnitJobId到OrgUnitModel。爲什麼?

同樣,對於員工,您是否將IsPrimaryJob屬性添加到OrgUnitJobEmployee模型,或將PrimaryJobId添加到員工模型。

+0

現在想不到任何要添加的內容,但我喜歡這個模式的外觀 - 到目前爲止我看過的最現實的組織圖表模式。 – finnw 2009-06-21 21:29:54

回答

0

我並不完全理解經理的概念。經理是員工還是組織單位?根據您的回答,我會在OrgUnit和/或OrgUnitJobs上擁有ManagerEmployeeId或ManagerOrgUnitJobId屬性。

我將PrimaryJobId添加到員工。這保證員工只有一個主要工作。

所以我想在這兩種情況下,我會贊成布爾IsXxx屬性的XxxId類型屬性。一個IsXxx屬性打開了多個經理或多個主要工作的大門。

+0

多個經理在真實世界中發生,所以模式允許它。 – finnw 2009-06-21 21:31:30

1

你可以考慮增加2個表(雖然我可能失去了一些東西):

OrgUnitManagers(OrgUnitJobID) 
OrgUnitJobEmployeeMain(OrgUnitJobEmployeeID) 

可以使用參照完整性設置,以確保如果OrgUnitJob或OrgUnitJobEmployee記錄的刪除這些表都將自動更新(如果可用在你的DB)

- 或 -

OrgUnitManager(OrgUnitJobID, OrgUnitId) 
OrgUnitJobEmployeeMain(EmployeeId, OrgUnitJobID) 

可以使用指涉IAL完整性和現在指標,以確保其唯一性,雖然現在孤單在架構

林複製有點困惑,無論是在OrgUnitJob級或OrgUnitJobEmployeeID級別指定的管理者?上面假設它在OrgUnitJob上,但如果它在員工級別上,則將OrgUnitManagers(OrgUnitJobID)更改爲OrgUnitManagers(OrgUnitJobEmployeeID)