0

ER からリレーショナル モデルへのマッピングを理解するために、このサイトを調べていました。以下はリンクです:

ER モデルからリレーショナル モデルへ

ケース 1 を考えてみましょう: Passport エンティティ タイプが全体参加であるため、person テーブルと Passport テーブルを has リレーションシップと共にマージして、上記の 3 つのすべての属性と主キーを Person_id として持つ 1 つのテーブルにマージできます。

私の疑問は、パスポートを所有していない人々にとって多くの NULL 値につながるのではないかということです。より良い解決策は、Person_id を Passport リレーションの外部キーとして含め、Person エンティティ タイプ自体の別のリレーションとして含めることだと考えていました。

どちらのソリューションにも長所と短所があるようです。

1) 1 つの大きなテーブルは、多くの NULL 値の可能性を意味しますが、個人のパスポートの詳細に簡単にアクセスできます。

2) 2 つの別個のテーブルは NULL 値がないことを意味しますが、人々のパスポートの詳細を見つけるには、結合操作を実行するか、2 つの別個のテーブルを検索する必要があります。

これら2つの解決策のうち、正しいのはどれですか? 正しいとは、そのような場合に一般的に行われている解決策はどれですか?

4

1 に答える 1

0

どちらのソリューションも一般的に使用されています。パスポート番号に依存する情報が他にない場合にのみオプション 1 を検討しますが、この場合は別のエンティティではなく、ER の (オプションの) 属性としてモデル化します。パスポートに原産国や有効期限などの依存属性がある場合は、別のエンティティとしてモデル化し、オプション 2 を使用して実装します。

于 2016-09-12T07:06:05.923 に答える