2009-06-21 8 views
1

私は組織図を設計していますが、ここではモデルはほとんど準備ができて簡略化されています。DBデザインの質問

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

はので、私はすべての組織部門のManagerEmployeeを(1が必要です)を知りたい、そして従業員が複数のジョブを持つことができますが、そのうちの一つが主な仕事である必要がありますので、私は知っていただきました!彼のマネージャーや他のもの。 これはscneseの背後にある小さなワークフローをサポートするため、非常に単純なOrgチャートモデルではありません。

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

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

+0

が今追加して何も考えることはできませんOrgUnitManagers(OrgUnitJobEmployeeID)にOrgUnitManagers(OrgUnitJobID)を変更するが、私はこのスキーマの外観が好き - 私が今までに見た最も現実的な組織図スキーマです。 – finnw

答えて

0

私はマネージャのコンセプトを正確に理解していません。マネージャーは従業員か組織単位ですか?回答に応じて、OrgUnitやOrgUnitJobsにManagerEmployeeIdまたはManagerOrgUnitJobIdプロパティがあります。

私はEmployeeにPrimaryJobIdを追加します。それは従業員がの1つだけプライマリジョブを持つことを保証します。

私はどちらの場合も、ブール値IsXxxプロパティよりもXxxIdタイプのプロパティが好きだと思います。 IsXxxプロパティは、複数のマネージャまたは複数のプライマリジョブのドアを開きます。

あなたは(私は何かが欠けてもよいが)2つの以上のテーブルを追加することを検討でき
+0

複数のマネージャーがReal Worldで起こるので、スキーマがそれを可能にするのは良いことです。 – finnw

+0

ManagerOrgUnitJobは、その組織ユニット内の他のジョブと同様に、そのOrgUnitに対して定義されたジョブですが、一意であり、そのOrgUnitのマネージャージョブの位置を示す必要があります。 最後に、マネージャは従業員です(その職位に記入してください)。 私はマネージメント・ジョブのポジションを他のジョブと異なるものにしたくないので、従業員の職務変更の履歴を組織に保管することができます。 – hazimdikenli

1

OrgUnitManagers(OrgUnitJobID) 
OrgUnitJobEmployeeMain(OrgUnitJobEmployeeID) 

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

-OR-

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

指示対象を使用することができます今度はスキーマ内で重複するものの、一意性を保証するためにインデックスを作成します。

マネージャは、OrgUnitJobレベルまたはOrgUnitJobEmployeeIDレベルで指定されていますか?上記OrgUnitJobでそのを想定しているが、その場合には、従業員のレベルで、