第4回 リレーショナル・データベース・マネジメント・システムとは?
日本オラクル株式会社
井上 学 (いのうえ まなぶ) 山田 真二郎(やまだ しんじろう)
「基礎からはじめるデータベースセミナー」は、データベースの知識を習得するにはまず何から始めたらよいのかと、書籍やセミナー情報を探している方のためのセミナーです。これまでデータベースに触れたことのない方や、おもにメインフレームやオフコンを中心に扱ってきたために、オープンな環境で動くリレーショナル・データベースに携わった経験がない人たちや営業職の方向けに、「そもそもデータベースって何だろう?」というところから始まり、リレーショナルデータベースのしくみとOracle Databaseのアーキテクチャを基本から学習することを目的としています。今回は、その第4回目の講義です。今日のデータベース市場において主流とされる“「リレーショナル・データベース」の仕組み”についてご説明します。
講師
生徒
リレーショナル・データベースは、おもに「表(テーブル)」「データベース・エンジン」「SQL(構造化問い合わせ言語)」の3つの要素から構成されています。表はデータを格納し、データベース・エンジンはリレーショナル・データベースに対して操作をおこないます。またSQLとは、リレーショナル・データベースに要求を出すプログラミング言語です。では、それぞれについて詳しく説明していきましょう。
リレーショナル・データベースは、データを「表(テーブル)」に格納します。図1を見てください。普段使っている表計算ソフトがすぐに思い浮かんだと思います。リレーショナル・データベースは、データを「行(ロー、レコード)」と「列(フィールド、カラム)」の2次元の構造で格納します。「行」と「列」を指定することにより、取り出したいデータの値を取得します。 図の例で考えてみましょう。「EMPLOYEE(従業員)」表から高橋さんの電話番号を取り出してみましょう。高橋さんのデータは、EMPNO300番の行に入っています。次に、高橋さんのデータの電話番号列(TEL列)を選びます。
図1 表(テーブル)
「行」と「列」が交差する高橋さんの電話番号「022-716-6000」というデータを取得できますね。
リレーショナル・データベースに対してクライアント側(プログラム実行部分)からリクエスト要求があった際に、クライアントの要求はいったん「データベース・エンジン」に渡され、データベース・エンジンがクライアントに代わってリレーショナル・データベースへの処理をおこなうのです。そして、その結果がデータベース・エンジンからクライアントに返されるという仕組みです。データベース・エンジンは、表とクライアントの間に位置します。
データベース・エンジンの役割を一言で言うと、「プログラムからの要求に対し回答する」ですね?
そうです。図2の左下の部分は、本講義の第2回目で使用した図です。DBMS※の部分がデータベース・エンジンです。こういった仕組みを利用することにより、第2回の講義で説明したデータの共有や、データの物理的な格納先を意識しなくてもデータを容易に扱うことが可能になります。
図2 データベース・エンジン
※データベースを管理する仕組みであるデータベース・エンジンのことを、DBMS(データベース・マネジメント・システム)と言います。とくに、リレーショナル・データベースを管理する仕組みのことを「リレーショナル・データベース・マネジメント・システム(RDBMS)」と言います。RDBMS自体はソフトウェアなので、コンピュータ上のメモリやプロセスから構成されています。
構造化問い合わせ言語「Structured Query Language」の頭文字をとって、SQLと呼ばれています。米国規格協会(ANSI)と国際標準化機構(ISO)の2つの標準化団体の協力によって、SQLの規格の標準化が進められています。現在では、SQL:2008規格(2008年制定)があります。
SQLは、リレーショナル・データベース用標準言語なのですね。
はい。また、SQLは以下の3つに分類できます。
| データ定義 | データを格納する表を定義 表と表を関係を持たせたり、制約などを定義 |
|---|---|
| データ操作 | 表に対して、データの検索、更新、挿入、削除 複数の表を結合 |
| トランザクション管理 | データを更新してから、更新情報が確定するまでの一連の流れを管理 |
図3 SQLの種類
データ定義文は主要コンポーネントである表を作成し、データ操作文はデータ挿入/更新/削除などをおこないます。また、データベースでは複数の更新処理をひとまとめ(一連の処理)にしておこなうケースがあります。DBMSはデータを更新してから、確定するまでの処理の流れを管理します。それをトランザクション管理と言います。(トランザクション管理については、第5回目講義で詳しくご説明します。) 図4にあるように、SQLはとてもわかりやすい表示で記述します。
データベースに「EMPLOYEE」表を作成する。
create table (empno number, empname varchar2, job varchar2, deptname varchar2, location varchar2, tel number, salary number)
「EMPLOYEE」表からデータを取り出す。
select * from employee;
「EMPLOYEE」表にデータを挿入する。
INSERT INTO EMPLOYEE VALUES (600, '安田', '営業', '営業本部', '仙台', 1300);
「EMPLOYEE」表のデータを更新する。
update employee set salary = 2000;
「EMPLOYEE」表のデータを削除する。
Delete from employee;
図4 SQL文の例

(参考資料)SQLコマンド例
直感的にわかりますね。
データ定義言語(DDL)である「CREATE」文を使用して表を作成します。また「ALTER」文を使用すると表の構造を変更できます。
データを取り出すときには、データ操作言語(DML)である「SELECT」文を使用します。逆に表にデータを挿入するときには、「INSERT」文を使用します。また、データを更新するときは「UPDATE」文を使用します。
データベースに対して変更したデータを確定する場合には、「COMMIT」を使用します。反対に、データベースに対して変更したデータを取り消す(中止する)場合には、「ROLLBACK」を使用します。これがトランザクション制御(DCL)です。
なるほど。「SQL」はリクエストを発行する役割を担うのですね。
では最後に、リレーショナル・データベースを利用した場合にデータを取り出す一連の簡単な流れを整理しましょう。
データベースに格納されたデータを取り出すために、クライアントからリレーショナル・データベース・マネジメント・システム(RDBMS)に対して「SQL」という言語を使用してリクエストを要求する。
「SQL」によって要求されたリクエストを、「データベース・エンジン」が受け取る。
「SQL」の要求に対して、「データベース・エンジン」がディスク内の「表」からそれに対応するデータを取り出す。
「データベース・エンジン」が、取り出したデータをクライアントに返す。
図5 リレーショナル・データベースからデータを取り出す基本ステップ
表はデータを格納する、SQLはリクエストを発行する、データベース・エンジンはリクエストを回答するという役割をそれぞれ担っているのですね。よく理解できました。
はい。それでは本日の講義はこれで終了します。
次回は、本講義でご紹介した「SQL」についてもう少し詳しくご説明します。
"基礎から始めるデータベース入門セミナー" インデックスに戻る
本記事は、「オラクル通信」の同名連載記事から抜粋し、一部に修正を加えたものです。
Copyright © 2010, Oracle Corporation Japan. All rights reserved. 無断転載を禁ず
この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。
Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。