テーブルとリレーション
テーブルとはデータを実際に格納しておく場所のことです。テーブルは関連のある項目をひとまとめにした表をイメージしてもらえると分かりやすいと思います。テーブルの項目のことをカラム(列)といい、個々のデータのことをレコード(行)といいます。下記に商品情報を格納しているテーブルの例を示します。
カラム(列) | |||
---|---|---|---|
商品コード | 商品名 | 単価 | |
レコード(行) | 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と同じ内容のファイルを用意しましたので、必要な方はこちらからダウンロードしてください。