これらのタイプの質問に対する答えは、多くの場合「場合による」と認識していますが、それでも一般的なコンセンサスはどうなのか疑問に思っています。
次のような複数のエンティティを扱っています
- 会社
- チャリティー
- 審査員
- ストックテイカー
などなど...
いずれも、電子メール、電話、住所などの連絡先情報を持っています。
連絡先情報を保存するために考えていた 2 つの設計方法は、
方法 1) contact テーブルと company、charity、auditor、stocktaker の間にロール テーブルを作成します。
- dbo.Company -> dbo.CompanyAddress <- dbo.Address
- dbo.Company -> dbo.Companytelephone <- dbo.telephone
dbo.Company -> dbo.Companyaddress <- dbo.email
dbo.Auditor-> dbo.AuditorAddress <- dbo.Address
- dbo.Auditor-> dbo.Auditortelephone <- dbo.telephone
- dbo.Auditor-> dbo.Auditoraddress <- dbo.email
利点: データベースに必要な住所、電話番号、および電子メール テーブルが 1 つだけで、各エンティティ タイプのすべての電話番号、住所、および電子メールが 1 か所に保存される 欠点: 多数の関連テーブルが作成される
方法 2) 会社、慈善団体、監査人、株式取得者ごとに個別の連絡先テーブルを作成する
- dbo.Company -> dbo.CompanyContactAddress
- dbo.Company -> dbo.CompanyContacttelephone
dbo.Company -> dbo.CompanyContactaddress
dbo.Auditor -> dbo.AuditorContactAddress
- dbo.Auditor -> dbo.AuditorContacttelephone
- dbo.Auditor -> dbo.AuditorContactaddress
これの利点は、実装と保守が容易になることです。欠点は、連絡先の詳細がデータベース全体の複数の場所に保存されることです。
誰かが他のアイデアを持っているなら、それは大歓迎です。
どうもありがとう