我正在设计一个组织结构图,模型几乎已经准备就绪,并且为了清晰起见而进行了简化。
OrgUnit (OrgUnitId, Name, ReportsToOrgUnitId, ...)
OrgUnitJobs (OrgUnitJobId, OrgUnitId, JobName, ReportsToOrgUnitJobId, ... ,IsJobGroup)
Employee (EmployeeId, ........)
OrgUnitJobEmployee (OrgUnitJobId, EmployeeId, AssignedDate, .....,)
所以我想知道每个OrgUnit的ManagerEmployee(应该有一个),而Employees可以有多个工作,但其中一个必须是主要工作,所以我知道他的经理和其他东西。 这将支持scnese背后的一些工作流程,因此这就是为什么它不是一个非常简单的组织结构图模型。
那么你会做什么,你会添加像(IsManager属性到OrgUnitJobs模型)的属性或将ManagerOrgUnitJobId添加到OrgUnitModel。为什么?
同样,对于员工,您会将IsPrimaryJob属性添加到OrgUnitJobEmployee模型,或将PrimaryJobId添加到Employee Model。
答案 0 :(得分:1)
您可以考虑再添加2个表格(虽然我可能会遗漏一些内容):
OrgUnitManagers(OrgUnitJobID)
OrgUnitJobEmployeeMain(OrgUnitJobEmployeeID)
可以使用参照完整性设置来确保删除OrgUnitJob或OrgUnitJobEmployee记录,这些表会自动更新(如果在您的数据库中可用)
-OR -
OrgUnitManager(OrgUnitJobID, OrgUnitId)
OrgUnitJobEmployeeMain(EmployeeId, OrgUnitJobID)
可以使用参照完整性和现在索引来确保唯一性,尽管现在模式中存在重复
我是否在OrgUnitJob级别或OrgUnitJobEmployeeID级别指定了管理员?上面假设它在OrgUnitJob,但如果它在员工级别,将OrgUnitManagers(OrgUnitJobID)更改为OrgUnitManagers(OrgUnitJobEmployeeID)
答案 1 :(得分:0)
我并不完全理解经理人的概念。经理是员工还是组织单位?根据您的回答,我在OrgUnit和/或OrgUnitJobs上有一个ManagerEmployeeId或一个ManagerOrgUnitJobId属性。
我会将PrimaryJobId添加到Employee中。这可以保证员工只有一个主要工作。
所以我想在两种情况下我都赞成在布尔IsXxx属性上使用XxxId类型的属性。 IsXxx属性为多个经理或多个主要工作打开了大门。