データモデルとその設計
現実社会のデータをコンピュータで扱えるようにするために、データモデルと呼ばれるものを設計する。
データモデルとは、データベースで取り扱うデータおよびそれらに対する操作の仕方を規定する枠組みのことで、次のような手順でデータが持つ構造やデータ間の関係をあらわすための図を作成する。
- 業務としておこなう事柄としてどんなことがあるのかを把握する。
- 各業務がお互いにどのように関連しているのかということや各業務がどのように機能しているのかということを把握し、これから構築しようとしている業務システムではどんな機能が必要となるのか考え、管理すべき情報を選ぶ。
- 管理すべき情報を整理し、データモデルとしてあらわすための図を作成する。データモデルを表す図は、ER図と呼ばれているものを始めとし、様々なものが考案されている。このような図は紙と鉛筆を使って作成してもよいし、このような図を作成できるパソコン用のソフトウェアを使って作成しても良い。
このようにして作成されたデータモデルは、特に概念データモデルと呼ばれる。
概念データモデルは取り扱うデータの構造や関係を正確に表しているものであるが、そのままではまだまだコンピュータで扱う形として適切とは言えない。そこで、データベース設計者は概念データモデルをコンピュータで扱うためにより適切な表現にするということを行う。具体的には、利用しようとしているデータベース管理システム(Database Management System, DBMS)で使える形に概念データモデルを再構成する。そのようにしてできるデータモデルは論理データモデルと呼ばれる。そしてさらに、論理データモデルはデータベース管理システムによって半ば自動的に、取り扱うデータ構造や格納方式に合わせたデータモデルに変換され、これは物理データモデルと呼ばれる。
データモデルの作成においてデータベース設計者が行う作業は「概念データモデル」と「論理データモデル」の設計に集約されると考えて良い。
概念データモデルの作成
代表的な概念データモデルとして、実体-関連モデルと呼ばれるものがある。これは、モデル化対象の世界を「実体(entity)」と「関連(relationship)」で表現するものである。また、実体や関連は「属性(attribute)」と呼ばれるものを持つことができるようになっている。以下、詳しく見ていくことにする。
実体
実世界の情報をモデル化するとき、扱うことにする個々の対象のことを実体(entity)と呼ぶ。そして、同じ種類の(共通の特徴を持つ)対象をひとまとめにして考えることにすれば、個々の対象はそれぞれ何かしらの概念的なカテゴリに属していると考えることができ、そのようなカテゴリを実体型(entity type)と呼ぶ。
例
ある会社のそれぞれの社員やある会社のそれぞれの部署などは実体と考えることができる。
ある会社のそれぞれの社員をひとまとめにして扱うことを考えた時、それぞれの社員は「社員」という概念的なカテゴリに属していると思うことができる。また、ある会社のそれぞれの部署をひとまとめにして扱うことを考えたとき、それぞれの部署は「部署」という概念的なカテゴリに属していると思うことができる。
このような意味で、「社員」というカテゴリや「部署」というカテゴリは実体型であると考えることができる。
関連
2つの実体の間に存在していると考えられるなんらかの関係をあらわしたものを関連(relationship)と呼ぶ。
また、ひとつひとつの「実体」ではなく、それらをひとまとめにして概念的なカテゴリである「実体型」を扱う場合、「関連」は2つの「実体型」の間の関連性をあらわすものと考えることにし、関連型(relationship type)と呼ぶことにする。
例
ある会社において、ある社員はある部署に所属しているので、「所属(する)」という関連を考えることができる。
ただし、ひとつひとつの「実体」ではなく、それらをひとまとめにして概念的なカテゴリである「実体型」を扱うことにすれば、「関連」は2つの「実体型」の間の関連性をあらわすものと考えることになるので関連型と呼ぶことになる。つまり、「社員鈴木」が「営業部」に「所属(する)」というような個別の関連に注目するのではなく、「社員」という実体型と「部署」という実体型の間に「所属(する)」という関係であらわされる「関連型」があると考えることにする。
属性
ある1つの実体型に属している各実体は共通して備わっている性質や特徴を持っている。例えば、ある会社の「社員」という実体型に属している各実体(つまりそれぞれの社員)は、「社員番号」、「氏名」、「入社年月日」、「所属部署」などという概念で表される共通の性質、特徴を持っている。このような、ある概念であらわされる共通の性質、特徴のことを、その実体型がもっている属性(attribute)という。
関連型も属性を持つことがある。
例
「社員」が「部署」に「所属(する)」という関連型「所属」では、属性として例えば「所属年月日」、「元の部署」などを考えることができる。
補足
これまでの説明では「実体」という用語と「実体型」という用語は区別して使っている。しかし、実際には「実体」という用語で「実体型」を意味しているような場合も多い。これに従い、以後、断りなく「実体型」を単に「実体」と表現することもある。
同様に、「関連」という用語で「関連型」をあらわす場合もある。
実体-関連モデルを作成する前に考えるべきこと
実体-関連モデルを作成するときに、どのような実体型、関連型、属性を考察の対象にするのかということは業務の特性やデータをどのような目的で、どのように活用するのかといったことを総合的に考慮して決定する。
実体−関連図(ER図)
実体−関連図(ER図)は実体-関連モデルを図によってあらわすためのもので、いくつかの流儀がある。
歴史的には、初めピーター・チェン(Peter.P.Chain)によって、現在ピーター・チェン記法と呼ばれているものが提案された。その後、バックマン線図、IE形式と呼ばれるものや IDEF1X形式と呼ばれるものなど、オリジナルとは別の表記法がいくつも考案されている。