2つのデータベースを何らかのフィールドをキーとしてデータベースを結合するときの方法が、多数あります。よくあるのが、実績のデータベースがあって、そこに、キーでマスターから品名や原価を結合することです。エクセルのVLOOKUP関数を用いて行うことに似ています。
テストデータ作成
上記のような2つのデータベースをテストで作成してみました。
以下のような結果が欲しいわけです。つまり品番がキーとなっているので品番に該当する品名を入れ込みたいわけです。
2つのデータベースを結合している線をクリックすると
となってます。演算子とフィールドの設定は良いとして、下のパフォーマンスが良くわからないので、テストしてみます。
カーディナリティが、現在 多数と多数となってます。
カーディナリティを、多数と1に変更してみます。
変化がありません。
カーディナリティを1と1に変更してみます。
得意先Aだけに、ぶどうとみかんが集計されてしまいました。
カーディナリティを1と多数に変更してみます。
得意先BCDがなくなり、Aだけの販売数量のみが表示されました。
同じ品番で違うものが登録されていた場合
普通マスターに同じ品番で違うものが登録されている場合にはありえませんが、
の時に、カーディナリティを多数と多数にすると
腐ったみかんの表示が増えた行数となりました。
カーディナリティを多数と1でも同じ結果、
その他、カーディナリティを1と1、1と多数は、上記結果に腐ったみかんが表示的に追加された結果でした。
参照整合性を変化させてみる
カーディナリティを多数と1で、果実売上の参照整合性を「一部のレコードが一致」から「すべてのレコードが一致」に変更すると、
というように、みかんの数字に腐ったみかんの数量もカウントされた数量に変わります。なぜだかわかりません。
結論
上記内容から、マスターは、同じキーが2つあるとうまく動かないので、ダブらないように作りこむことが重要ということがわかりましたが、多数と1の関係については不明のままでした。
コメント