2009-06-21 8 views
1

조직도를 디자인 중이며 여기서는 모델이 거의 준비가되어 있고 단순화되어 있습니다.DB 디자인 질문

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

그래서 모든 조직 단위의 ManagerEmployee을 (를해야한다) 알고 싶어하고, 직원들은 하나 개 이상의 직업을 가질 수 있지만, 그 중 하나는 주요 작업이어야한다, 그래서 나는 알고 뭐죠 그의 매니저 및 기타 물건 . 이것은 scnese 뒤에있는 작은 워크 플로를 지원하기 때문에 매우 간단한 조직도 모델이 아닙니다.

그래서 어떻게할까요? OrgUnitJobs 모델에 IsManager 속성을 추가하거나 OrgUnitModel에 ManagerOrgUnitJobId를 추가 할 수 있습니다. 그리고 왜?

마찬가지로 직원은 IsPrimaryJob 속성을 OrgUnitJobEmployee 모델에 추가하거나 PrimaryJobId를 Employee Model에 추가합니다.

+0

지금 추가하는 것도 생각할 수 없다 OrgUnitManagers (OrgUnitJobEmployeeID)에 OrgUnitManagers (OrgUnitJobID)을 변경,하지만 난이 스키마의 모양을 좋아한다 - 지금까지 본 가장 현실적인 조직도 스키마. – finnw

답변

0

관리자 개념을 정확하게 이해하지 못했습니다. 관리자는 직원입니까 아니면 조직 단위입니까? 대답에 따라 OrgUnit 및/또는 OrgUnitJobs에 ManagerEmployeeId 또는 ManagerOrgUnitJobId 속성이 있습니다.

나는 PrimaryJobId를 Employee에 추가 할 것입니다. 그 직원은 하나의 기본 작업을 보장합니다.

그래서 두 경우 모두 부울 IsXxx 속성보다 XxxId 유형 속성을 선호합니다. IsXxx 속성은 여러 관리자 또는 여러 기본 작업에 대한 문을 엽니 다.

당신은 (내가 뭔가를 누락 될 수도 있지만) 2 개 이상의 테이블을 추가하는 것을 고려 할 수
+0

여러 명의 관리자가 Real World에서 발생하므로 스키마에서 허용됩니다. – finnw

+0

ManagerOrgUnitJob은 해당 조직 단위의 다른 작업과 마찬가지로 해당 OrgUnit에 대해 정의 된 작업이지만 고유하며 해당 OrgUnit의 관리자 작업 위치를 표시해야합니다. 결국 Manager는 직원입니다 (해당 직책을 기입하십시오). 경영진 직책을 다른 직무와 다르게 처리하고 싶기 때문에 직원의 직무 변화 기록을 조직에 보관할 수 있습니다. – hazimdikenli

1

:

OrgUnitManagers(OrgUnitJobID) 
OrgUnitJobEmployeeMain(OrgUnitJobEmployeeID) 

가 OrgUnitJob 또는 OrgUnitJobEmployee 레코드의 이러한 테이블이 자동으로 업데이트됩니다 삭제하면 보장하기 위해 설정 참조 무결성을 사용할 수 (있는 경우

- 또는

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

는 지시 대상을 사용할 수) 귀하의 DB에 ial 무결성을 유지하고 유일성을 보장하기 위해 색인을 생성합니다.

관리자가 OrgUnitJob 수준 또는 OrgUnitJobEmployeeID 수준에서 지정되었는지는 약간 혼란 스럽습니까 ?? 위의 OrgUnitJob에 그것의 가정,하지만 경우 직원 수준에서,