1

私は組織図を設計しています。モデルはほぼ準備ができており、ここではわかりやすくするために少し簡略化されています。

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

だから私はすべての OrgUnit の ManagerEmployee (1 つあるはずです) を知りたいです。Employees は複数の仕事を持つことができますが、そのうちの 1 つが主な仕事でなければならないので、彼のマネージャーやその他のものを知っています。これは scnese の背後にある小さなワークフローをサポートするため、非常に単純な組織図モデルではありません。

では、(IsManager プロパティを OrgUnitJobs モデルに) プロパティを追加するか、OrgUnitModel に ManagerOrgUnitJobId を追加しますか? なぜ?

同様に、従業員の場合、IsPrimaryJob プロパティを OrgUnitJobEmployee モデルに追加するか、PrimaryJobId を Employee モデルに追加します。

4

2 に答える 2

1

さらに 2 つのテーブルを追加することを検討できます (ただし、何か不足している可能性があります)。

OrgUnitManagers(OrgUnitJobID)  
OrgUnitJobEmployeeMain(OrgUnitJobEmployeeID) 

参照整合性設定を使用して、OrgUnitJob または OrgUnitJobEmployee レコードが削除された場合にこれらのテーブルが自動的に更新されるようにすることができます (DB で利用可能な場合)。

-また-

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 に追加します。これにより、従業員の主な仕事が1 つだけになることが保証されます。

したがって、どちらの場合も、ブール型の IsXxx プロパティよりも XxxId 型のプロパティを好むと​​思います。IsXxx プロパティは、複数のマネージャーまたは複数の主な仕事への扉を開きます。

于 2009-06-21T21:13:20.490 に答える