ER からリレーショナル モデルへのマッピングを理解するために、このサイトを調べていました。以下はリンクです:
ケース 1 を考えてみましょう: Passport エンティティ タイプが全体参加であるため、person テーブルと Passport テーブルを has リレーションシップと共にマージして、上記の 3 つのすべての属性と主キーを Person_id として持つ 1 つのテーブルにマージできます。
私の疑問は、パスポートを所有していない人々にとって多くの NULL 値につながるのではないかということです。より良い解決策は、Person_id を Passport リレーションの外部キーとして含め、Person エンティティ タイプ自体の別のリレーションとして含めることだと考えていました。
どちらのソリューションにも長所と短所があるようです。
1) 1 つの大きなテーブルは、多くの NULL 値の可能性を意味しますが、個人のパスポートの詳細に簡単にアクセスできます。
2) 2 つの別個のテーブルは NULL 値がないことを意味しますが、人々のパスポートの詳細を見つけるには、結合操作を実行するか、2 つの別個のテーブルを検索する必要があります。
これら2つの解決策のうち、正しいのはどれですか? 正しいとは、そのような場合に一般的に行われている解決策はどれですか?