さて結論から言うとこの分割方法(前ページの状態)は適切ではありません。ポイントは[商品CD]と[単価]との関係です。このケースでは商品に対する単価は決まっています。このようにあるフィールドの値が特定のフィールドの値によって自動決定される場合には、そのパターンをマスターテーブルに書き込んでおき、メインのリストからは除外させる必要があります。すなわち[単価]フィールドはメインリスト側ではなく「T商品マスター」側に書き込んでおく必要があるのです。適切なテーブル構築は下表のようになります。
このようにあるフィールドの値が他のフィールドの値によって自動決定される場合(「従属性がある」と言います)には、その関連性をマスターテーブル側に記載し、メインリストには記述をしません。これまで学習したテーブル構築のポイントを3つまとめておきます。
テーブル構築のポイント
- 演算部はテーブル構築から除外して考える(リスト内に演算部があればテーブル構築後クエリを作っておく)【演算部の除外】
- 何度も重複する値が利用されるテキスト型のフィールドは、別途マスター表を作り数値型にする【コード化】
- 従属性がある場合には、関連性をマスターテーブル側に記述する。メインリスト・関連テーブルからは除外する【従属性の考慮】