0

本当にアドバイスが欲しいのは設計上の決定です。従業員の休憩を記録しようとしています。また、従業員は特定の日に何度も休憩を取ることがあります。どのような戦術を採用する必要がありますか?

私の当初の考えでは、従業員は多くの休憩を取ることができ、1 回の休憩は 1 人の従業員に与えられるものでした。1 対多。

ただし、(理論的には) 1 人の従業員が多くの休憩を取り、1 つの休憩が多くの従業員によって取られる (多対多) ことも可能です。たとえば、ジョンとフレッドは午後 12 時に休憩し、午後 1 時に戻るとします。

私は一対多に行く傾向がありますが、私たちは髪を分割することに取り掛かります。たとえば、ジョンは午後 12 時 1 分に休憩に入り、フレッドは午後 12 時に出発し、2 人とも午後 1 時 05 分と午後 1 時 3 分に別の時間帯に戻ってきます。

この種のシナリオに適したデータベースの設計方法を教えてください。下の写真のアイデア:

多対多 一対多

4

2 に答える 2

0

1 対多を選択します。絶対

昼休みの「12 対 1」などの標準値を保存できる「標準休憩」テーブルを追加できます。従業員 (または従業員のグループ) がこれらの「標準休憩」のいずれかを取ると、対応する「休憩」行が「休憩」テーブルに追加されます。

最終的に、より複雑なモデルでは、この「標準休憩」テーブルが「デフォルト スケジュール」テーブルにリンクされます。たとえば、オフィスの従業員は「昼休み」の恩恵を受けます。

テーブルは次のようになります。

Tbl_Break:
    id_Break (primary key)
    id_Employee (not null)
    breakStartTime (not null)
    breakEndTime (not null)        
    id_StandardBreak (nullable)

Tbl_StandardBreak:
    id_StandardBreak (primary key)
    standardBreakStartTime (not null)
    standardBreakEndTime (not null)
    standardBreakDescription (not null)
    id_Schedule (not null)

この構成では、フィールド Tbl_Break.id_StandardBreak の値が null であるかどうかに応じて、従業員と休憩の間の 1 対多の関係、または従業員と既定の休憩の間のより複雑な多対多の関係を管理します。

于 2013-08-09T09:44:10.590 に答える