RDBMS とは何か?データ、データ操作、データ定義、データベース管理機能を含んだシステムをDBMS と呼ぶ。DBMS の役割をまとめると次のとおりになる.
DBMS は、データ操作が正しく行えるということが何よりも重要である。データ操作の途中でデータが消えてしまったり、検索結果が間違っていたとしたら誰もそのようなシステムは使わないでしょう。DBMS は、データモデルという数学的に定式化されたあるモデルをもとにテータ操作を行い、そのデータモデルに沿った形でデータベースにデータを格納していく。データモデルでは次のことが決められている。
データ構造は、3とおり、木構造、ネットワーク構造、表形式であり、RDBMSではデータをすべて2次元の表形式で表現する。このようなモデルをリレーショナル・モデルと呼ぶ。 RDBMS はリレーショナル・モデルに基づいた DBMS である。SQL は,リレーショナル・モデルのデータベースを利用する.SQL は、データ操作文(DML: Data Management Language)、データ定義文(DDL: Data Definition Language)両方を含む言語である。 リレーショナル・モデルでは、すべてのデータは2次元の表(table)で表す。例えば、図1にある社員と所属部署の表現を見てみよう。この図の表「社員」と表「部署」のように、意味的にみてひとまとまりとして考えるとよい対象を、表にする。表は複数の属性(attribute)から構成され、その属性値によってその特性を表している。属性はフィールド(field)とも呼ばれる。この例では表「社員」の属性として「社員番号」、「氏名」、「住所」が定義されている。
データ定義の作業には、このほか、データ間の関係および制約の定義や、属性のデータ型および形式の定義、アクセス権に関する定義も含まれる。属性のデータ型とは、例えば、文字列型なのか、イメージ型なのか、というようなデータの性質のことである。文字列型であれば、許される文字列の長さも定義する。イメージ型であれば、さらに、その中で各種のデータ形式に分かれるので、そのデータ形式を定義することが必要になる。アクセス権とは、この部分のデータは誰が見てもよいというようなデータを見たり書き換えたりできる権利のことである。 こうしたデータベースの枠組というべきものを、データベースのスキーマ(schema)という。データベースというデータ集合は、このスキーマの中にデータを入れていくことによってでき上がっていくのである。データ定義は、スキーマ定義とも呼ばれる。データ定義をする人は「このデータベースはどのような使い方をされるだろうか」ということを十分に検討し、「皆が必要なデータが入っていて、かつ、使いやすいスキーマ」をつくらなくてはいけない。何を一つの表としてまとめるか、これはその人の物の見方に依存するが、できるだけ偏りのない適切な見方をしなくてはならない。 E-R モデル(Entity-Relationship model)による表の設計データ定義の場合、いきなり表を書き出すということはまずない。はじめに概念レベルで対象となる世界を記述して、それからリレーショナル・モデルのスキーマに変換する。概念レベルの記述には、E-Rモデル(Entity−Relationship Model、実体−関連モデル)が広く使われている。E-Rモデルでは、世の中の事象を実体(entity)と関連(relationship)の二つで表現する。実体とは、実世界の中で私たちが認識する物や事がらのことである。それらの実体間の関係を表すものが関連である。図2に、図1でとり上げた社員と部署の様子をE-Rモデルで示した。この図をE-Rダイヤグラムという。長方形は実体を表し、ひし形は関連を表している。関連「所属」はM対N関連なのでひし形から伸びている線に、MとNと書いてある。長方形から伸びている楕円は実体の属性である。 データベースのアクセス法一般にDBMSでは数種類のファイル編成法を用意しており、インデックス(index、索引)用などのように用途別に使い分けている。DBMSを構成するモジュールのうち、データベースヘデータを格納したりデータを検索したりする部分のことをアクセス法(access method)と呼ぶ。インデックス用ファイルというのは、他のファイルがデータそのものを入れているのに対し、特定の属性をインデックスとし(この属性をインデックス・キーと呼ぶ)、そのインデックス・キー値から本体のデータの入っている場所(これをデータベースの世界では普通 Record IDと呼ぶ)を探し出す、という機能をもっている。図3を見てみよう。この例では表「本」に対して属性「タイトル」と属性「著者名」を、インデックス・キーとしている。インデックス・キーに対しては、それぞれ一つのインデックス・ファイルが作成される。どの属性をインデックス・キーにするかはデータ定義のときに指定する。インデックスをつけたほうが当然検索は速くなるが、このインデックス・ファイルの内容はデータ更新のたびに、DBMSによって変更されるので、過度にインデックスをつけると更新が遅くなってしまうおそれがある。
補助資料:
参考文献: “実践SQL教科書” 西尾草治郎 監修 ASCII 出版局 1996. |