DBMS – ER設計の問題点

以前の記事「DBMS ERモデルの概念」でER図を取り上げました。このポストでは、ER図を設計する際に発生するさまざまな問題について説明します。

以下は、ER図の設計プロセスで発生する可能性のあるいくつかの問題です:

1. エンティティセットと属性の選択

ここでは、エンティティセットと属性の選択がER設計のセマンティクス全体を変える方法について説明します。これを理解するために、例としてStudentというエンティティセットがあり、その属性としてstudent-nameとstudent-idがあるとしましょう。これをstudent-id自体がstudent-classとstudent-sectionといった属性を持つエンティティであると考えることができます。

上記で議論した2つのケースを比較すると、最初のケースでは学生は1つの学生IDしか持たないと言えますが、2番目のケースでは学生IDをエンティティとして選んだため、学生が複数の学生IDを持つことを意味します

2. エンティティセットとリレーションシップセットの選択

オブジェクトをエンティティセットまたはリレーションシップセットで最も適切に表現できるかどうかを決定するのは難しいことです。これらの選択肢(エンティティ対リレーションシップ)の間で最適な選択を理解するためには、将来の要件に対応するためにエンティティに新しいリレーシップが必要になるかどうかを理解する必要があります。この場合、リレーションシップセットではなくエンティティセットを選択する方が良いでしょう。

具体的な例で理解しましょう。人が銀行からローンを組むとしましょう。ここでは人と銀行という2つのエンティティと、それらの関係であるローンがあります。これは問題ありませんが、共同でローンを組む必要が生じた場合、2人の関係を定義するために新しいリレーションシップが作成される必要があります。この場合、ローンをリレーションシップセットではなくエンティティセットとして選択する方が良いです。

3. バイナリ対n-aryリレーションシップセットの選択

ほとんどの場合、ER図で記述される関係はバイナリです。n-ary関係はエンティティセットが2つ以上ある場合であり、エンティティセットが2つの場合はバイナリリレーションシップと呼ばれます。

n-aryリレーションシップはER設計を複雑にする可能性がありますが、良いニュースは、どんなn-aryリレーションシップも複数のバイナリリレーションシップを使用して変換および表現できることです。

これはわかりにくいかもしれませんので、例を挙げてn-aryリレーションシップを複数のバイナリリレーションシップに変換する方法を理解しましょう。例えば、4人の家族の関係を説明する必要があるとしましょう:父、母、息子、娘。これは複数のバイナリリレーションシップとして簡単に表現できます。父と母の関係は「配偶者」、息子と娘の関係は「兄弟姉妹」、父と母が子供との関係は「子供」として表現できます。

4. リレーションシップ属性の配置

DBMSの基数比率は、いつリレーションシップ属性を配置する必要があるかを決定するのに役立ちます。1対1または1対多のリレーションシップセットの属性は、リレーションシップセットではなく参加するエンティティセットと関連付けることが推奨されます。

例えば、エンティティが別個のエンティティとして特定できない場合、参加するエンティティセットの組み合わせで表現される場合は、これらのエンティティを多対多のリレーションシップセットに関連付ける方が良いでしょう。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です