矢沢久雄 グレープシティ アドバイザリースタッフ

今回のキーワード
・RDBMS

 DBMSが読み書きするデータ・ファイルは,一般的に「リレーショナル・データベース(Relational Data Base=関係データベース)」と呼ばれる構造になっています。これは,データを概念的に表形式で表し,複数の表に関係(リレーション)を設定したものです。リレーショナル・データベースを扱うDBMSのことを,特に「RDBMS(Relational Data Base Management System)」と呼びます。SQL Server,Oracle,Accessは,どれもRDBMSです。

 SQLを理解するためには,リレーショナル・データベースの知識が必須になります。今後,SQLの構文を学べば,それが分かるでしょう。常にリレーショナル・データベースの構造を考えながらSQLを記述しなければならないのです。

 データベースでは,1件のデータを「行(レコード)」で表します。1件のデータを構成する個々の項目を表したものを「列(またはフィールド)」と呼びます。例えば,商品テーブルなら,「商品ID,商品名,単価」などが列です。列には,データ形式(文字列なのか数値なのか)や,制約(ユニーク,ヌルを許さない,値の範囲など)の属性を設定できます。行と列の集合が「表(テーブル)」です。テーブルを,縦に区切ると列,横に区切ると行になります。

図1●リレーショナル・データベースの例
 リレーショナル・データベースでは,複数のテーブルで1つのデータベースを表します。これは,データの無駄を省くためです。このことはデータベースを設計する時に考えることなので,この連載では深く言及しませんが,1つのテーブルだけですべてのデータを表すと,列に同じ値を持つレコードが複数存在することになり,無駄が多く間違いの生じやすいデータベースとなってしまうことを覚えておいてください。

 テーブル間の関係は,「リレーション」と呼ばれます。リレーションは,1つのテーブルのレコードを一意的に識別できる列(これを「主キー」と呼びます)で,同じ列の値(これを「外部キー」と呼びます)を持ったテーブルと関係付けることで実現されます。リレーションの具体例として,図1[拡大表示]を見てください。

 これは,Accessで作成した販売管理データベースの例です。Shohin(商品)テーブル,Uriage(売上)テーブル,及びKokyaku(顧客)テーブルの3つのテーブルがあり,それぞれが線で結ばれています。このようにデータベースの設計は,列を定義することでテーブルを作成し,テーブル間のリレーション(関係する列)を線で結ぶことで行われます。データベースの設計によって,個々のテーブルの列の属性やテーブル間のリレーションが決定されるわけです。これらの情報のことを「スキーマ」と呼ぶことも覚えておいてください。

図2●リレーションをたどる
 Shohinテーブルには,ShohinID(商品ID),ShohinMei(商品名),ShohinTanka(商品単価)という3つの列があります。Uriageテーブルには,UriageID(売上ID),ShohinID(商品ID),KokyakuID(顧客ID),UriageSuryo(売上数量)という4つの列があります。Kokyakuテーブルには,KokyakuID(顧客ID),KokyakuMei(顧客名),KokyakuTel(顧客電話番号)という3つの列があります。ShohinテーブルとUriageテーブルは,ShohinIDという列で結びついています。KokyakuテーブルとUriageテーブルは,KokyakuIDという列で結びついています。これらが,リレーションです。

 リレーションがあることで,1つのテーブルから他のテーブルのデータを芋づる式に取得できます。例えば,個々のテーブルに図2[拡大表示]に示したレコードが格納されているとしましょう。リレーションをたどってShohinテーブル,Uriageテーブル,Kokyakuテーブルの順に追って行けば,「100円のりんご」を,「TEL11-1111-1111の日経太郎」が,「20個」買ったことがわかります。

 今回は,SQLを学ぶ前に必要となるデータベース自体の基礎知識を中心に説明しました。次回からは,いよいよSQLの構文の説明がスタートです。お楽しみに!

◎今回の復習
・データを概念的に表形式で表し,複数の表に関係(リレーション)を設定したものをリレーショナル・データベースと呼ぶ
・表(テーブル)は,行(レコード)と列(フィールド)で構成される
・リレーションは,「主キー」を使って,同じ列の値を持ったテーブルと関係付けることで実現する