sql >> データベース >  >> RDS >> Database

従業員のスケジュールをデータベースに保存する方法

    レベル:初心者

    非常に多くの組織が、従業員のスケジュールを保存するという一般的な問題に直面しています。企業、大学、または単に個人など、どの機関でも、多くのエンティティはスケジュールを表示するためのアプリケーションを必要とします。そのため、データベースモデルを考えてから、今後の記事で、従業員のスケジュールをデータベースに保存するための簡単なアプリケーションについて説明します。

    現在、デザインは次のようになっています。

    モデルは非常に単純です。

    ヒント–自然および代理の主要戦略

    1. 自然キーの値が変更される可能性がある場合、または自然キーが複雑すぎる場合は、代理主キーを使用してください。
    2. 自然な候補キーが少数の列(理想的には1つだけ)で構成されていて、その値が変わらない場合は、自然な主キーとして使用します

    詳細 自然および代理の主キーについて。

    employee テーブルには、名前、名前、住所、電話番号など、各従業員を説明する基本的な属性が含まれています。名前と名前は各レコードを一意に識別しません(同じ名前と名前の人が複数いる可能性があります)。そのため、新しい列が導入されました(id )、代理キーと呼ばれます 。

    schedule 表には、各従業員が勤務している曜日と時間が含まれています。 work_date 列は、各従業員が働いていた日を指定します。 start_work_hour およびend_work_hour 列はその日の労働時間を識別します。

    Peterという従業員がいるとしましょう。彼は2月4日に仕事をしていて、スケジュールの開始時刻と終了時刻をマークしています。

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


    id employee_id work_date start_work_hour end_work_hour is_holiday is_weekend
    1 1 2015-02-04 10 16 0 0


    そのようなシステムを構築している間、私たちは誰が最も夜働いたか、誰が最も週末/休日に働いたかを知りたいかもしれません。このような情報を含むレポートを生成するには、列is_holiday およびis_weekend 紹介されました。

    このアプローチを使用すると、会社の休日の日付を含む休日用の別のテーブルが必要になります。従業員が勤務時間を入力すると、列is_holiday およびis_weekend トリガーを使用して更新できます。日付と時刻を挿入すると、トリガーは日付が休日か週末かを確認し、フィールドに正しい値を挿入します。


    1. ADODBとOracleでxas(...)を使用できないのはなぜですか?

    2. OracleのテーブルからN番目の行を選択します

    3. 行フェッチのOracleサイズを大きく設定すると、アプリの速度が低下しますか?

    4. MySQL Galeraクラスターストリーミングレプリケーションのガイド:パート1