hatena
hatena
2020/06/28 (日) 13:03:20
質問の設定だと、それぞれのテーブルが
M1(一) →(多)M2
M1(一) →(多)M3
のような一対多関係になります。
一つのクエリで上記の結合をしてしまうと、M2とM3が多対多の関係になるので、ユニークに決まらない場合で出てくるので整合性エラーになります。
例えば、下記のような場合、
M1
1 1 A
1 2 B
1 3 C
M3
1 1 X
2 1 E
2 2 F
M2 の FK が 1 1 のとき、A か X か決まりませんよね。
M1 と M3 を分けずに一つににまとめれば、このような重複は許可されないので整合性の保証されたデータになり、エラーはでなくなります。
PK
1 1 A
1 2 B
1 3 C
1 4 D
2 1 E
2 2 F
2 3 G
M1 と M3 を分けたまま、2つのテーブル間で上記のようなユニーク属性を制定するのはできません。
やるとしたら、上記のように一つに纏めておいて、必要に応じて、選択クエリで分割することになると思います。
ちなみに整合性チェックを入れなければ動操作して、クエリでもデータを取得できるのですが、きちんとした動作ではないですよね・・・。
整合性が保障されないので、整合性に反したデータの入力が可能になってしまいますので、入力、更新するたびに自前で整合性をチェックする(VBAなどで)ことになります。
わざわざそのような面倒かつ不確実なこともぜすとも上記のように必要に応じて選択クエリに分ける設計にすれば問題奈と思います。
通報 ...