ここに...私は飛行機のチャーター会社のための仮想的なデータベースを作成しようとしていると私は私が従業員のために作成する必要がありますどのように多くのテーブルの上に立ち往生少しだが、問題への基本的な導入である:リレーショナルデータベーステーブル、データの重複の危険?
従業員は従業員が多く、従業員は乗組員と非乗員で構成され、乗組員はパイロット、乗務員、飛行エンジニア、ロードマスターであり、非乗員は管理者、受付係などがあります。すべての従業員が乗組員ではありません。
すべての乗組員は医療検査を頻繁に受ける必要があり、これらの検査の記録を保存する必要があります。すべての乗組員にも免許と認定が必要です。これらの免許と認定の詳細は保存する必要があります。
フライトが予約されている場合、航空機の種類と予約の種類によって、少なくとも1人の乗組員が予約に割り当てられます。したがって、小型航空機の場合、1人のパイロットだけが乗組員です。しかし、それがジェット機なら、2人のパイロットと乗組員が乗組員を形成します。
私の問題はこれです。クルーとクルー以外の従業員で構成されたテーブルと、ライセンス/認定と医療検査の別の2つのテーブルを作成する必要がありますか? (ライセンス/認証と医療のテストテーブルを持つ従業員表を関係)
それとも
私だけにライセンス/認証と医療のテストテーブルを割り当て、すべての従業員と乗組員のための別のテーブルで基本的なテーブルを作成する必要があります乗組員のテーブル?このようにして、乗組員は乗組員以外のメンバーから分離されるので、乗組員と医療および認証テーブルの関係は、従業員テーブル全体から切り離すことができます。ここでデータの重複が心配です。
事前に感謝します。
CrewテーブルまたはNonCrewテーブルに特定のデータが必要ですか?私の意見では、あなたが余分なエンティティを必要としない場合は、一般的にそれを使用しない方が良いです。または、言い換えれば、クルーとノンクリートのテーブルを別々にすることで得られるものは何ですか? –
いいえ、特定のデータについて言及する必要はありません。ただ乗組員が免許証と医学試験記録のレコードを持っている必要があるだけです。だから、従業員のテーブルを1台持つ方が良いでしょうか?ありがとうございました! –
外来のキーを使ってデータベースレベルで「乗組員のみがライセンスとレコードを持っている」ように強制するかどうかを検討する必要があります。 CrewMemberテーブルがない場合は、Certification-CrewMember外部キーを作成することはできません.Certificate-Employeeだけです。 –