0

次のエンティティ関係は正しいですか? 従業員、タイムシート、および承認者テーブルをリンクしようとしています。

他のテーブルやフィールドはほとんどありませんが、この質問に関して私の主な関心事は 3 つのテーブルに従うことです。1 人の従業員が複数のタイムシート承認者を持つことができます。

Employee
--------
EmpID pk
Name
TimeSheet
------------
TSHEET_ID PK
FK_EmpID FK
Approved_By
Timesheet_Approver (one employee can have more than one approver
                    but only one will be approving the timesheet)
------------------
EmpID
Approver_EmpID 

従業員テーブル データ:

EmpID Name
----- -----
1     john
2     david
3     mark

タイムシート承認者データ:

EmpID Approver
----- --------
1     2
1     3
2     3

タイムシート

TSID EMPID APPROVED_BY
---- ----- -----------
101  1     2
102  1     3
103  2     3



またはこれは大丈夫ですか?

ここに画像の説明を入力

4

4 に答える 4

1

私のおすすめ

なぜあなたはApprover別のテーブルとして欲しいのですか?Employee テーブルのBitように Fieldを保持できますか? IsApproverそれ以外の場合は、作成していますredundancy

于 2012-06-21T17:39:26.210 に答える
0

従業員

EmpID-Pk

名前

タイムシート

TSHEET_ID-PK

EmpID-FK

ApproverID-FK

承認者

ApproverID -PK

デパートメント

OK、これが私の最終的な答えです。合わない場合は、自分で試してみてください。私はそれらすべてのコメントを読む時間がありません。そして、私はあなたを助けようとしていました。承認者リレーションを使用すると、部門などで承認者を取得できます。これらのデータを取得するには、SQLクエリを確認してください。

于 2012-06-21T10:51:21.530 に答える
0

複数の承認がある場合、Approved_by という列を TimeSheet テーブルに追加することはできません。次に、さらに 2 つのリレーションを追加できます。1 つは承認者リスト用です。

承認者

承認者ID

デパートメント

名前

タイムシート承認

タイムシートID

部門 1 承認者 ID

Department2承認者ID

..........................すぐ

Approved_by を TimeSheet 領域から削除することを忘れないでください。

于 2012-06-21T08:47:27.663 に答える
0

デザインに違和感を感じます。これが私の考えです。

従業員

EmpID パック

名前

タイムシート

TSHEET_ID PK

FK_EmpID

によって承認された

3 番目のテーブルは不要です。

于 2012-06-21T04:41:13.723 に答える