ホーム - データベース - テーブルとリレーション

テーブルとリレーション

テーブルとはデータを実際に格納しておく場所のことです。テーブルは関連のある項目をひとまとめにした表をイメージしてもらえると分かりやすいと思います。テーブルの項目のことをカラム(列)といい、個々のデータのことをレコード(行)といいます。下記に商品情報を格納しているテーブルの例を示します。

  カラム(列)
商品コード 商品名 単価
レコード(行) 00001 鉛筆 30
00002 消しゴム 50
00003 ノード 90


リレーショナルデータベース(RDB)の設計においては、多くのテーブルにはレコードを一意に定めることができるコード(上記の例では商品コード)が割り振られています。このレコードを一意に定めることができるカラム及びカラム群を主キーといいます。テーブルには1つのカラムで主キーを構成するものや複数のカラムで主キーを構成するものがあります。また、主キーのないテーブルもあります。

RDBではコードと呼ばれるカラムを用いて、同一の情報がなるべく複数の場所に出てこないようにテーブルを設計します。テーブルとテーブルはコードによって関連付けするのが一般的です。この関連付けのことを「リレーション」といいます。例えば商品の売上伝票があった場合、商品に関しての個々の情報は商品情報用のテーブルに保存し、売上伝票には商品コードのみを取り扱う形で設計します。これから話を進めていく題材として売上伝票と伝票集計した商品売上データを想定したものを考えていきます。下記にそのイメージを示します。

(売上伝票イメージ)
売上伝票イメージ

(商品売上データイメージ)
伝票No 日付 商品コード 商品名 単価 数量 消費税 伝票メモ
00001 2007/03/01 00001 鉛筆 30 5 0.05 売掛金で
00001 2007/03/01 00002 消しゴム 50 2 0.05 売掛金で
00002 2007/03/02 00002 消しゴム 50 1 0.05 ラッピング
00002 2007/03/02 00003 ノート 90 3 0.05 ラッピング
00003 2007/03/03 00001 鉛筆 30 10 0.05 郵送
00003 2007/03/03 00002 消しゴム 50 3 0.05 郵送
00003 2007/03/03 00003 ノート 90 5 0.05 郵送
※一枚の売上伝票には売上明細として複数の商品が記載されています。

上記の商品売上データは表計算ソフトで印刷用に作成されたデータのイメージですので、これを「商品マスタ(商品情報を格納するテーブル)」「売上伝票データ(売上伝票1枚が1レコードとなるデータを格納するテーブル)」「売上伝票明細データ(売上伝票に記載されている商品1つが1レコードとなるデータを格納するテーブル)」の3つに分けて保存します(後述)。そして必要に応じて3つのテーブルをリレーションで連結させて必要なデータを取得します。下記に上で示した商品売上データに基づく各テーブルを示します。

(商品マスタ)
商品コード 商品名 単価
00001 鉛筆 30
00002 消しゴム 50
00003 ノート 90
※単価は現時点の単価です。

(売上伝票データ)
伝票No 日付 消費税率 伝票メモ
00001 2007/03/01 0.05 売掛金で
00002 2007/03/02 0.05 ラッピング
00003 2007/03/03 0.05 郵送
※消費税率は日付によって異なる可能性があります。

(売上伝票明細データ)
SEQNo 伝票No 商品コード 単価 数量
1 00001 00001 30 5
2 00001 00002 50 2
3 00002 00002 50 1
4 00002 00003 90 3
5 00003 00001 30 10
6 00003 00002 50 3
7 00003 00003 90 5
※単価は売り上げた当日の単価です。

これ以降の話では、テーブルとリレーション、そしてデータの例として上記に示したもの(売上DBと呼ぶことにします)を使って話を進めていくことにします。また、上記のデータベースの設計についての補足事項は「データベース設計」のページを参照してください。

また、上記の売上DBと同じ内容のファイルを用意しましたので、必要な方はこちらからダウンロードしてください。