前回のように、売上伝票をただ分けただけでは、鑑部と明細部のつながりが無くなってしまいます。すると、どの明細部が、どの鑑部のものなのかがわかりません。
【1】そこで、明細部に「伝票No」の項目(列)を加えます。
*計算部分は省略しました。
これだけで関連付けは完了です。簡単ですよね。
伝票No が両方にあることで、どの鑑部の明細部なのか、判断できるようになりました。つまり同じテーブルに、異なる鑑部の明細部を保存しておいても、区別することができます。
あと、もう一つ付け加える項目があります。
【2】明細部の各行を、一意に識別するため、主キーとして「明細No」を加えます。
*一意とは、同じデータが他に無く、重複しないことです。
*主キー(primary key)とは、レコードを「一意」に識別するためのフィールドです。
主キーである 明細No が「1」のレコードは、必ず1件しかありません。
したがって、たとえ伝票No、品名、数量、単価が同じでも、明細Noが異なれば、違うレコードだと識別できるわけです。
また、明細部での 伝票No は主キーではなく、外部キーなので、重複してもOKです。伝票Noが重複しているものが、同じ鑑部に属するレコードだとわかります。
【3】ここまでの作業をまとめると、以下のようになります。
・鑑部
・明細部
【ワンポイント】
鑑部の主キーには、「No」の項目を「伝票No」として、そのまま使うことができます。
主キーには、数値型のフィールドを使うのが一般的です。
もし、伝票番号に意味を持たせたい場合は、「H20-12-22-0001」のような文字列で入力できるフィールドを、新たに用意したほうが良いでしょう。