「データベース」という単語をよく耳にする。
なんとなくは分かるけど、厳密にはよく知らないという人が大半だと思われる。
私もそうだ。
データベースとは、決められた形式で整理されたデータの集まりである。
一般的には、データベースはコンピュータ上に再現されたものを指すが、紙の電話帳なども広い意味でのデータベースである。
私が小さい頃好きだった、ウルトラマン怪獣百科や東映ヒーロー怪人百科などもデータベースの一種と言えるだろう。
今回からデータベースについて観てみたい。
・データベースの目的
データベースは、データをプログラムやアプリケーションから切り離して、一元管理したものである。
この一元管理により、次のような効果が得られる。
独立性の確保
データがアプリケーションに依存しない。アプリケーションの変更がデータに影響しないのである。
また、データの共有が容易になる。
データ矛盾発生の防止
データの整合性を確保できる。論理に矛盾がなく一貫する。
同じデータをアプリケーションごとに重複させないですむようになる。
データの機密保持、標準化
データベースシステムのセキュリティ機能が利用できる。
データの標準化に対する意識が高まる効果がある。データをある標準に合わせるのである。
・3層スキーマアーキテクチャ
データベースのデータを記憶装置やアプリケーションから独立させるために、ANSI/SPARCの3層スキーマアーキテクチャという考え方がある。
スキーマとは、データの構造やデータの格納形式などを記述した「枠組み」を表す言葉である。
概念スキーマは、データベース化する対象世界をモデル化した構造で、データベースそのものと考えることができる。
外部スキーマは、ユーザやアプリケーションの目的に応じて、概念スキーマから必要なものを抽出・加工して提供されるものである。
内部スキーマは、概念スキーマを物理的に磁気ディスク装置上に実装するための形式である。ファイルのレコード様式やインデックスの形式などが内部スキーマに相当する。
最も重要なスキーマは概念スキーマである。
これをユーザの視点や実装方法と分けて考えることで、アプリケーションやファイル編成などの変更の影響が概念スキーマに及ばないようにしている。
これにより「データの独立性」を確保しているのである。
・E-R図
概念スキーマの設計は、データベースをつくる上で最も重要な作業だ。
これは以下の手順で進められる。
対象世界→概念モデル作成→論理モデル作成→概念スキーマ
概念モデルとは、対象世界がどのように関連しているかを表すモデルで、データベースの形式に左右されない。
論理モデルは、概念モデルを使用するデータベースの種類に応じて詳細化したものである。
概念モデルを記述する代表的な手法に、E-R図(ERD : Entity-Relationship Diagram)がある。
E-R図では、対象となるシステムや業務で用いるデータを、エンティティ(実体)とリレーションシップ(関連)に分けて表現する。
エンティティは四角形で、リレーションシップは多重度(カーディナリティ)とともに線や矢線で表される。
エンティティはシステムや業務で利用されるデータそのものに該当し、リレーションシップはエンティティ間に存在する関係に該当する。
上図だと、学生エンティティと学校エンティティの間には、“所属する”という関連があるということになる。
多重度とは、関連先のエンティティのインスタンス(実際のデータや値)がいくつ対応するか、を表すデータの数的対応関係のことである。
例えば、上の図だと、社員は1つの部署に所属し、部署には複数の社員が所属する、という関係を示している。
社員エンティティから部署エンティティを見たとき、部署エンティティの数字の1が所属先が1つだけを表す。
反対に、部署エンティティから社員エンティティを見たとき、部署に1人以上の社員が所属する関係を表す。
ここでコメ印は上限の無い”多”を示す。
また、E-R図ではエンティティ名に加えてデータ項目である属性を表現することも可能だ。
学校データは、Idと学校名と住所より構成され、学生データは、学校Idと学籍番号と氏名より構成される。
・データベースの論理モデル
概念モデルを作成すると、それを使用するとデータベースの種類に応じて論理モデルに書き換える。
ネットワークモデル
対象をレコードの親子関係で表す。親子関係は多:多に対応する。
階層モデル
対象をレコードの親子関係で表す。親子関係は1:多に対応する。
関係モデル
対象を二次元の表形式で表す。現在の主流である。(関係データベース)
オブジェクト指向モデル
対象をオブジェクト(データと手続きとを一体化)単位で表す。マルチメディア情報などを柔軟に扱うことができる。
・データベース言語
論理モデルの選択を終えたら、データベース言語を用いてスキーマを記述する。
データベース言語は次のように分類できる。
DDL(データ定義言語 : Data Definition Language)
スキーマを定義・記述する言語。
DML(データ操作言語 : Data Manipulation Language)
データの登録や検索などに使用する言語。
データベース言語の標準には、関係データベース用のSQLや、ネットワーク型データベース用のNDLなどがある。
SQLのデータ定義言語をSQL-DDL、データ操作言語をSQL-DMLと分類することもある。
・後記
データベース作成の要諦は、概念スキーマの作成であり、そのための最初の一歩が概念モデルの作成ということになる。
概念スキーマさえできれば、あとは作業ということもできるかもしれない。
データベース、この辺からだんだん面白くなってきそうである。