DB設計における「データモデル」とは
データベース設計で扱われるデータモデルとは、
実世界におけるデータの集合を、DBMS上で利用可能な形に落とし込むためのモデルを指す。
データモデルの種類
データモデルといってもいきなり実装上のDBMSで利用可能な形式に落とし込むのではなく、
段階を踏んで徐々に実装に適したモデル化を行っていく。
抽象化の高いデータモデルから具象度の高いデータモデルへと段階的にモデル化することで、
様々なDBMSに対応したDB設計が可能になる。
データモデルはその抽象度によって主に3種類に分類される。
- 概念データモデル
- 論理データモデル
- 物理データモデル
概念データモデル
概念データモデルでは、DBMSに依存しない抽象度の高いデータモデル設計を行う。
概念データモデルではデータの主体と主体間の関連をざっくりと洗い出すためにE-R図を用いる。
E-R図
E-R(Entity-Relation)図は、情報の主体であるエンティティと、
それらの関連を表すリレーションを可視化する図である。
1対1のE-R図
例えばオンラインショッピングサイトのDB設計を行う場合、以下のようなE-R図を作る。
上のE-R図は、
- 1つのユーザ情報に対して、1つのカート情報(購入候補商品)が関連付けられている
- 1つのカート情報に対して、1つのユーザ情報が関連付けられている
ことを示している。
買い物をするユーザ一人ひとりが一つのカートを保有している状態を表したいときに、
このようなE-R図を書いたりする。
このユーザとカートのような関係を
1対1の関係と呼ぶ。
1対多(多対1)のE-R図
オンラインショッピングサイトにユーザの購買履歴を追加する場合、以下のようなE-R図を作成するかもしれない。
上のE-R図では、
- 1つのユーザ情報に対して、0個以上の購買履歴情報が関連付けられている
- 1つの購買履歴情報に対して、1つのユーザ情報が関連付けられている
一人のユーザは購買履歴を0個以上持ちうる。
例えばオンラインショッピングサイトを初めて利用するユーザには購買履歴は存在しないし、
毎週定期的に雑誌を購入するユーザの購買履歴は毎週のように追加されていく。
逆に、一つの購買履歴に着目すると、その履歴はただ一人のユーザ固有のものであるので、 E-R図上で関連付けられるユーザの数は1となる。
この関係を1対多、または多対1の関係と呼ぶ。
多対多のE-R図
オンラインショッピングを利用するユーザは、欲しい商品を次々とカートに入れていく。
上のE-R図では
- 1つのカート情報に対して、0個以上の商品情報が関連付けられている
- 1つの商品情報に対して、0個以上のカート情報が関連付けられている
ユーザはカートに商品を入れない時もあれば、幾つかの商品入れる時もある。
一方、商品側は様々なユーザからカートに入れてもらえる一方で、
誰からもカートに入れてもらえない可能性もある。
この関係を多対多の関係と呼ぶ。
論理データモデル
論理データモデルは概念データモデルから抽象度を少し下げた、DBMSを考慮したモデルとなる。 この段階のモデルではDBMSの取り扱うデータ構造に乗っ取たモデルの設計が行われる。
論理データモデルの構造にはさまざまなものが存在するが、
特に取り上げられることの多い以下のモデルを紹介する。
- 階層型データモデル
- ネットワーク型モデル
- リレーショナルモデル
階層型データモデル
データを木構造で表現するモデル。
各データ間に親子関係を構築するため、データ間関係は常に1対多となっている。
あるデータを参照・更新するには、ルート(一番上のデータ)から子データを次々に辿っていく必要があるため、
親データの数が多くなるほどDBで保持すべきデータ数が増えてしまう。
ネットワーク型モデル
各データに1対多の関係を構築するモデル。
ネットワーク型モデルの一つのデータに着目すると、関係の1はそのデータ自身、
多は他の全てのデータを示す。
階層構造とは異なり、その関係構築の仕方から任意の個数の親レコード・子レコードを持つことができる。
実世界のデータを自然な形でモデル化できたため、1980年代初期までは採用されていたモデルだが
後に後述のリレーショナルモデルに取って代わられた。
リレーショナルモデル
列1 | 列2 | 列3 | 列4 |
---|---|---|---|
行 | |||
行 | |||
行 |
データ間の関係を二次元の表形式で記述するモデル。
(厳密な定義はこちらが詳しい...)
現在、多くのDBMSがこのモデルを採用している。
個々のデータを表す行(row、レコード)と、データの属性を表す列(column、カラム)
からなる表(テーブル)を操作し、データの参照・更新を行う。
このテーブルに対して正規化操作を行うことで、データ集合として提供される情報量はそのままに、よりシステムが利用しやすい形のテーブルへと変換することができる。
物理データモデル
実装にベッタリなデータモデル。
DBMSの定義するデータ型やデータ構造などを前提とする。
例えばリレーショナルモデルを採用したDBMSの場合、ここでテーブルの持つカラム、
各属性の型、テーブルの容量、インデックス、ページサイズなどを決定する。
まとめ
DB設計ではデータモデルと呼ばれる概念で現実のデータ集合を実装に向けモデル化する。
モデル化作業を行うことで、DBの設計を様々な抽象度行うことができる。
概念データモデルによって、DB上で扱うべき情報が選定される。
また各情報間の関連を定義することができる。論理データモデルは、概念データモデルをDBMS上で扱われるデータ構造に落とし込む。
物理データモデルは、DBMSの具体的な定義に基づいた設計を反映する。