データベース試験のプロジェクトを行っていますが、難しい点で行き詰まっています。これは私の ER 図の抜粋です。
ご覧のとおり、エンティティ Employee は、Waiter と Cook を一般化したものです。ヘッドウェイターとチーフクックは、それぞれウェイターとクックのスペシャライゼーションです。チーフのみがサプライヤーへの注文 (この抜粋には含まれていません) を履行できます。明らかに、一度に 1 人のチーフだけが注文を履行できます (図が煩雑にならないように、単一の履行関係を作成しました)。
ER図を改造した後(正しい言葉を使用していない場合は申し訳ありませんが、英語で翻訳しています)、これが結果です:
したがって、従業員には役割 (ウェイター、コックなど) が必要であり、役割ごとに (明らかに) チーフは 1 人しか存在できません。これが正しいかどうかは本当にわかりません。二重の一般化は私を大いに混乱させます。
次のステップは論理図 (テーブル) です。これは完全に混乱しています。これは可能な解決策です:
これはリレーショナル モデル (tblChief の FK2 に Unique Not Null 制約がある) への可能な変換ですが、弱点があります。tblEmployee の Employees ロールを変更すると、tblChief はこのエラーを認識せず、整合性が失われます。tblEmployee(Role) と tblChief(Role) の間に FK を追加することは良い解決策でしょうか? それとも、醜い/面倒ですか?
考えられる 2 番目の解決策を考えました。私はそれを好みますが、それでも大丈夫かどうかはわかりません:
ここでは、エンティティ Role とエンティティ Chief を 1 つのテーブルにマージしました。フィールド Chief は IDEmployee を参照しますが、ここでも Unique かつ Not Null である必要があります。
これらの解決策は正しいですか? 従業員と役割を挿入および更新するときに、これは大きな混乱になると確信しています(整合性チェックを一時的に削除しない限り、これを行うことはできません)。これを別の方法で行うことはできますか?
長い投稿で申し訳ありません (画像のリンクについては、直接投稿することはできません)。