2009/01/05
【誰にでもできる!システム開発】リレーショナルデータベースの基本操作
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
『誰にでもできる!システム開発』 2009/01/05 号
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ご愛読、ありがとうございます。
このメールマガジンは、システム開発を始めたばかりの方、これから始める
方向けに、筆者が日頃から心がけていることをお話しています。
扱う内容については、テクニックと考え方を半分ずつで構成しています。
思っていた内容と違う、つまらない、読む気力が無くなったという方、
購読解除はこちらからできます。
http://www.mag2.com/m/0000263428.html
著者プロフィール
http://www.shiga-it-office.com/mailmagazine/writer.html
事務所概要
http://www.shiga-it-office.com/profile.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■第29回 リレーショナルデータベースの基本操作
────────────────────────────────────
前回まで、リレーショナルデータベースの正規化をやってきましたが、正規
化した結果はテーブルとして実装します。
実装したテーブルに対し、プログラムからデータを入れたり、取り出したり
する処理があり、今回は取り出す処理についてお話したいと思います。
リレーショナルデータベースのテーブルは、列と行の二次元表で構成され、
基本操作として、「射影」、「選択」、「結合」の3つがあり、これらの操
作を組み合わせることで、自由度の高い取り出しができます。
実例を通して紹介しますので、以下のサンプルテーブルをご覧ください。
・取引明細
---------------------------------------------
| 取引番号 | 顧客コード | 商品コード | 数量 |
-----------+------------+------------+-------
| 00000001 | 0001 | A001 | 10 |
-----------+------------+------------+-------
| 00000002 | 0001 | B001 | 5 |
-----------+------------+------------+-------
| 00000003 | 0002 | A002 | 8 |
-----------+------------+------------+-------
| 00000004 | 0003 | A001 | 25 |
-----------+------------+------------+-------
| 00000005 | 0001 | B002 | 15 |
---------------------------------------------
・商品
----------------------------------
| 商品コード | 商品名 | 単価 |
-------------+------------+-------
| A001 | 抹茶ケーキ | 200 |
-------------+------------+-------
| A002 | モンブラン | 250 |
-------------+------------+-------
| B001 | クッキー | 80 |
-------------+------------+-------
| B002 | ビスケット | 70 |
----------------------------------
●射影
あるテーブルから、指定した列のみを取り出す操作です。
取引明細から取引番号と商品コードを取り出すと、以下のようになります。
-------------------------
| 取引番号 | 商品コード |
-----------+-------------
| 00000001 | A001 |
-----------+-------------
| 00000002 | B001 |
-----------+-------------
| 00000003 | A002 |
-----------+-------------
| 00000004 | A001 |
-----------+-------------
| 00000005 | B002 |
-------------------------
これをSQLで記述すると、
SELECT
取引番号, 商品コード
FROM
取引明細
となります。
●選択
射影とは逆に、あるテーブルから、指定した行のみを取り出す操作です。
取引明細から顧客コードが0001の行を取り出すと、以下のようになります。
---------------------------------------------
| 取引番号 | 顧客コード | 商品コード | 数量 |
-----------+------------+------------+-------
| 00000001 | 0001 | A001 | 10 |
-----------+------------+------------+-------
| 00000002 | 0001 | B001 | 5 |
-----------+------------+------------+-------
| 00000005 | 0001 | B002 | 15 |
---------------------------------------------
これをSQLで記述すると、
SELECT
*
FROM
取引明細
WHERE
顧客コード = '0001'
となります。
●結合
正規化では、意味のある単位に表を分割していきましたが、取り出すときに
は再び元の状態で取り出さないと不都合があります。
そこで、テーブル同士を共通するキーで結合させることができます。
取引明細と商品を結合すると、以下のようになります。
-----------------------------------------------------------------
| 取引番号 | 顧客コード | 商品コード | 商品名 | 単価 | 数量 |
-----------+------------+------------+------------+------+-------
| 00000001 | 0001 | A001 | 抹茶ケーキ | 200 | 10 |
-----------+------------+------------+------------+------+-------
| 00000002 | 0001 | B001 | クッキー | 80 | 5 |
-----------+------------+------------+------------+------+-------
| 00000003 | 0002 | A002 | モンブラン | 250 | 8 |
-----------+------------+------------+------------+------+-------
| 00000004 | 0003 | A001 | 抹茶ケーキ | 200 | 25 |
-----------+------------+------------+------------+------+-------
| 00000005 | 0001 | B002 | ビスケット | 70 | 15 |
-----------------------------------------------------------------
SELECT
取引明細.取引番号, 取引明細.顧客コード, 取引明細.商品コード,
商品.商品名, 商品.単価, 取引明細.数量
FROM
取引明細, 商品
WHERE
取引明細.商品コード = 商品.商品コード
となります。
結合の書き方は他にもありますが、それはまた別の号で紹介します。
ここでは結合イメージだけ、ご理解ください。
------------------------------------------------------------------------
■編集後記
最後までお読みいただき、ありがとうございました。
皆様、あけましておめでとうございます。
昨年は、アメリカのサブプライムローン破綻の影響で金融危機が深刻化しま
した。昨年を表す感じは「変」で、急変する世の中に対する不安が増してき
た一年だったのではないでしょうか。
今年こそは景気回復といきたいところですが、見通しはあまりよくないよう
で、中小企業だけでなく大手も倒産が相次ぐ、淘汰の年となりそうです。
そんな淘汰の年を乗り切るには、やはり地に足のついた技術を身につけるこ
とが一番の近道かもしれません。
このメールマガジンも、そのような考えで執筆を開始し、2年目となりまし
た。今年もどうぞよろしくお願いいたします。
最後になりますが、今号から執筆者が西村秀郷に代わります。
内容は変わりませんので、引き続きご購読お願いいたします。
ご感想・ご意見・ご要望などありましたら、気軽にご連絡ください♪
では、また次回お会いしましょう!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
『誰にでもできる!システム開発』 2009/01/05 号
本日のメールマガジンを読んだ感想をお聞かせください。
お寄せいただいた感想は、メールマガジン上で紹介させていただくことが
ありますので、ご了承ください。
配信中止はこちらから↓
http://www.mag2.com/m/0000263428.html
メールアドレスの変更はこちらから↓
http://www.mag2.com/m/0000263428.html
ご意見&ご感想はこちらから↓
http://www.shiga-it-office.com/mailmagazine/ImpressionFrom.html
コンサルティングのご相談はこちらから↓
http://www.shiga-it-office.com/inquiry.html
発行元 志賀IT事務所
http://www.shiga-it-office.com/
関連メールマガジン 「誰にでもできる!インターネット活用術」
http://www.mag2.com/m/0000263426.html
関連ブログ
☆コンサル日和
http://d.hatena.ne.jp/kei_onpu/
☆爆裂!C#野郎
http://csharp.yaminabe.info/
☆10年戦える開発技術
http://10year.yaminabe.info/
☆情報処理技術者試験午前対策
http://am.yaminabe.info/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



