![](https://blogimg.goo.ne.jp/user_image/6d/6b/bda56343ae613207f4082739bfa83f34.png)
これまで従属関係と参照関係についてそれぞれ説明してきましたが、それでは従属関係にするのか参照関係にするのかで、どのような違いがあるのでしょうか?
従属関係と参照関係を比較して説明します。
例えば、”部署”と”社員”の関係は”部署”に対して”社員”が複数存在するという関係ですから、1対N関係になりますが、”部署”と”社員”の関係をそれぞれ、従属関係と参照関係で定義すると図1のようになります。
【従属関係】
従属関係で定義していますので、下位エンティティの”社員”エンティティのキーとして上位エンティティのキーである”部署コード”を継承しています。
”社員”エンティティのキーがこのような構造だった場合、社員の登録や社員の部署が変更になった場合問題が発生する可能性があります。
例えば、図の例のように鈴木 一郎さんが総務部から営業部に転属になった場合、すでに営業部には社員コード“0001”の佐藤 三郎さんがいるので、部門コードの変更だけではなく、社員コードも変更する必要があります。
さらに、部署が決まらなければ社員の登録自体行うことができません。(社員データのみマスタ登録するということができません。)
また、所属している部署が廃止になった場合、部署を削除しようとすると、その部署に所属する社員情報も削除されてしまいます。(あるいは、所属している社員情報が存在する場合は、削除することができません。)
【参照関係】
参照関係で定義していますので、下位エンティティの”社員”エンティティの属性(キー以外)として上位エンティティのキーである”部署コード”を継承しています。
”社員”エンティティのキーはあくまで”社員コード”であり、”部署コード”とは独立した存在でるという形にしておけば、部署が存在しない社員情報の登録も行えますし、図の例のように鈴木 一郎さんが総務部から営業部に転属になった場合、社員は社員コードのみでユニークなので、所属部門コードの変更だけで大丈夫です。
また、所属している部署が廃止になった場合も、所属部署の値を削除するだけで、データの整合性を維持することが可能となります。
従属関係と参照関係を比較して説明します。
例えば、”部署”と”社員”の関係は”部署”に対して”社員”が複数存在するという関係ですから、1対N関係になりますが、”部署”と”社員”の関係をそれぞれ、従属関係と参照関係で定義すると図1のようになります。
【従属関係】
従属関係で定義していますので、下位エンティティの”社員”エンティティのキーとして上位エンティティのキーである”部署コード”を継承しています。
”社員”エンティティのキーがこのような構造だった場合、社員の登録や社員の部署が変更になった場合問題が発生する可能性があります。
例えば、図の例のように鈴木 一郎さんが総務部から営業部に転属になった場合、すでに営業部には社員コード“0001”の佐藤 三郎さんがいるので、部門コードの変更だけではなく、社員コードも変更する必要があります。
さらに、部署が決まらなければ社員の登録自体行うことができません。(社員データのみマスタ登録するということができません。)
また、所属している部署が廃止になった場合、部署を削除しようとすると、その部署に所属する社員情報も削除されてしまいます。(あるいは、所属している社員情報が存在する場合は、削除することができません。)
【参照関係】
参照関係で定義していますので、下位エンティティの”社員”エンティティの属性(キー以外)として上位エンティティのキーである”部署コード”を継承しています。
”社員”エンティティのキーはあくまで”社員コード”であり、”部署コード”とは独立した存在でるという形にしておけば、部署が存在しない社員情報の登録も行えますし、図の例のように鈴木 一郎さんが総務部から営業部に転属になった場合、社員は社員コードのみでユニークなので、所属部門コードの変更だけで大丈夫です。
また、所属している部署が廃止になった場合も、所属部署の値を削除するだけで、データの整合性を維持することが可能となります。
※コメント投稿者のブログIDはブログ作成者のみに通知されます