1

我正在设计一个组织结构图,模型几乎已经准备好,并且为了清晰起见稍微简化了一点。

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

所以我想知道每个 OrgUnit 的 ManagerEmployee(应该有一个),并且员工可以有不止一份工作,但其中一个必须是主要工作,所以我知道他的经理和其他东西是什么。这将支持 scnese 背后的一些工作流程,这就是为什么它不是一个非常简单的组织结构图模型。

那么你会怎么做,你会添加属性(IsManager 属性到 OrgUnitJobs 模型)还是添加 ManagerOrgUnitJobId 到 OrgUnitModel。为什么?

同样,对于员工,您会将 IsPrimaryJob 属性添加到 OrgUnitJobEmployee 模型,还是将 PrimaryJobId 添加到 Employee 模型。

4

2 回答 2

1

您可以考虑再添加 2 个表(尽管我可能会遗漏一些东西):

OrgUnitManagers(OrgUnitJobID)  
OrgUnitJobEmployeeMain(OrgUnitJobEmployeeID) 

可以使用参照完整性设置来确保 OrgUnitJob 或 OrgUnitJobEmployee 记录是否被删除,这些表会自动更新(如果在您的数据库上可用)

-或者-

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

可以使用参照完整性和现在的索引来确保唯一性,尽管现在模式中有重复

对于经理是在 OrgUnitJob 级别还是在 OrgUnitJobEmployeeID 级别指定的,我有点困惑?以上假设它在 OrgUnitJob,但如果它在员工级别,请将 OrgUnitManagers(OrgUnitJobID) 更改为 OrgUnitManagers(OrgUnitJobEmployeeID)

于 2010-03-31T21:36:35.903 回答
0

我不完全理解经理的概念。经理是员工还是组织单位?根据您的回答,我将在 OrgUnit 和/或 OrgUnitJobs 上拥有 ManagerEmployeeId 或 ManagerOrgUnitJobId 属性。

我会将 PrimaryJobId 添加到 Employee 中。这保证了员工只有一项主要工作。

所以我想在这两种情况下,我都喜欢 XxxId 类型的属性而不是布尔 IsXxx 属性。IsXxx 属性为多个经理或多个主要工作打开了大门。

于 2009-06-21T21:13:20.490 回答