ER図の一部はこちら。
ここで、Customer はスーパークラスであり、Private と Business は互いに素の必須参加を持つサブクラスであり、Business のお客様はそれぞれが互いに素の必須参加を持つ Silver、Gold、Diamond サブクラスのスーパークラスです。
簡単に説明すると、顧客はビジネスとプライベートに分かれています。ビジネスのお客様には、シルバー:10% 割引、ゴールド:25% 割引、ダイヤモンド:40% 割引の 3 つのメンバーシップ オプションがあります。上記をリレーショナルスキーマにマッピングする最良の方法は何ですか? 属性と一般属性を区別するものは何ですか? 現在、私は次のことを思いつきました:
4 つのテーブル - PrivateCustomer (Customer スーパークラスから) および SilverMember、GoldMember、DiamondMember (Business スーパークラスから)
PrivateCustomer (CuID, CuFirstName, CuLastName, CuDOB, CompanyName, CuAddressLine1, CuAddressLine2, PhoneNumber, CuEmail, CuNotes,
CuLocID)
SilverMember (CuID, ????? DiscPerc, DiscAccrued,
CuLocID)
GoldMember (CuID, ???? DiscPerc, DiscAccrued,
CuLocID)
DiamondMember (CuID, ???? DiscPerc, DiscAccrued,
CuLocID)
CuLocIDは、郵便番号、都市、国に関連する推移的な依存関係を削除するための外部キーです (別のテーブルに格納されている場所の詳細 - tblCuLoc )