- 締切済み
RDBの親子関係の表現について
はじめまして。 RDBの設計について、基本的な質問になりますが、 宜しくお願いします。 親子関係の表現の仕方について。 以下の2つのテーブルがあったとします。 ・会社マスタ ・部署マスタ 会社には複数の部署が存在するとして、 これをテーブルにする場合、 パターン(1) (部署マスタのPKに会社CDを含める) 会社マスタ ・会社CD(PK) 部署マスタ ・会社CD(PK) ・部署CD(PK) パターン(2) (部署マスタのPKに会社CDを含めない) 会社マスタ ・会社CD(PK) 部署マスタ ・部署CD(PK) ・会社CD で親子関係を表現することができると思います。 親子関係を表現する上で、 パターン(1)、(2)のどちらを採用すればよいか、 判断基準が分からず困っています。 パターン(1)と(2)はどのような違いがあり、 どのようなケースに適用すべきなのか教えて頂けないでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- n09430515
- ベストアンサー率52% (11/21)
> 1.会社CD、部署CDは、システムを利用する会社側が意識しない、システム管理上のCDとした場合でも、異なる会社で同じ部署CDを付けられないのは、パターン(2)の欠点となるのでしょうか? ユーザが目にしないシステム管理上のCDならば、(1)と(2)はほとんど違いません。 > 2.パターン(1)、(2)をそれぞれ見た場合、業務の違いの差というものを読み取れるものでしょうか?パターン(1)、(2)の違いは、業務の違いにより使い分けを判断するレベルの内容になるのでしょうか? 業務とは無関係です。マスタ間の親子関係が維持されれば、どちらでも同じだけのことができます。
- n09430515
- ベストアンサー率52% (11/21)
> 会社には複数の部署が存在する この前提ならば、会社CDおよび部署CDの複合キーでユニークになるように通常はパターン(1)のPKを張ります。 しかし、この複合キーだけだと、会社マスタに存在しない会社CDを部署マスタに入れることが可能です。 そこで、部署マスタの会社CDが会社マスタの会社CDのFK(Foreign Key)になるように制約を入れれば、前提どおりのデータ整合(親子関係)を保障できます。これで、会社マスタにない会社CDの部署マスタは作れなくなります。 パターン(2)でも会社CDにFKを同じようにつければ、最初の前提が保障できますが、そもそも異なる会社で同じ番号の部署CDをつけることができません。現実世界であまり見かけない、パターン(2)の特性(欠点)はココです。 (1)と(2)の差はともあれ、テーブル間の親子関係はPKではなく、FKで決まるものです。
補足
ご回答ありがとうございます。 非常にわかりやすい内容で、理解が進みました。 追加の質問になってしまいますが。。 1.会社CD、部署CDは、システムを利用する会社側が意識しない、システム管理上のCDとした場合でも、異なる会社で同じ部署CDを付けられないのは、パターン(2)の欠点となるのでしょうか? 2.パターン(1)、(2)をそれぞれ見た場合、業務の違いの差というものを読み取れるものでしょうか?パターン(1)、(2)の違いは、業務の違いにより使い分けを判断するレベルの内容になるのでしょうか?