データベース方式
関係データベースをはじめとするデータベースの種類、3層スキーマ、関係モデルの用語、DBMSの機能を理解できるようになります。
ねらい
データを整理して蓄える仕組みの土台を学びます。このレッスンを終えると、データベースの種類と特徴、3層スキーマの考え方、関係モデルの基本用語、DBMSが備える機能を説明できるようになります。
ストーリー
会員名簿を表計算ソフトで管理していた小さなお店が、通販サイトを始めることになりました。注文が同時に届くと名簿の更新がぶつかり、停電すれば書きかけのデータが壊れます。「複数の人が同時に使っても、壊れず、矛盾しない」。この要求に応えるのがデータベースと、それを管理するDBMSです。
データベースの種類
データの構造と関連付けの方法によって、データベースにはいくつかの種類があります。
| 種類 | 特徴 |
|---|---|
| RDB(関係データベース) | データを表の形で持つ。現在の主流 |
| HDB(階層型データベース) | データを木構造で持つ |
| NDB(網型データベース) | データを網の目の構造で持つ |
| OODB(オブジェクト指向データベース) | データと操作をオブジェクトとして持つ |
| XMLデータベース | XML文書をそのまま格納する |
階層型と網型は構造型データベースと呼ばれる古くからの方式です。近年は、関係モデルによらない方式も広がっています。文書単位で格納するドキュメント指向データベース、列単位で格納し集計に強い列指向データベース、つながりの表現に強いグラフデータベース、キーと値の組で単純に持つキーバリュー型データベース、データを主記憶に置いて高速に処理するインメモリデータベース、複数のコンピュータに分けて置く分散データベースです。
3層スキーマ:データの独立性を高める
データベースの構造の定義をスキーマといい、3つの層に分けて考えます。
- 外部スキーマ(副スキーマ)は、利用者やプログラムから見たデータの定義です。
- 概念スキーマは、データベース全体の論理的なデータ構造です。
- 内部スキーマ(記憶スキーマ)は、記憶装置上の物理的なデータ構造です。
層を分ける目的はデータの独立性です。たとえば内部スキーマ(格納の仕方)を変えても、概念スキーマと外部スキーマがそのままなら、アプリケーションは影響を受けません。
データモデルと関係モデル
論理的なデータ構造の表現方法をデータモデルといい、論理データモデルには関係モデル、階層モデル、ネットワークモデル(網モデル)、グラフ型のデータモデル(プロパティグラフ、トリプルストア)があります。物理的な格納を表すものは物理データモデルです。
RDBの土台である関係モデルでは、データを2次元の表で表します。用語の対応を押さえましょう。
| 関係モデルの用語 | 表でいうと |
|---|---|
| 関係(リレーション) | 表そのもの |
| タプル(組) | 行 |
| 属性 | 列(フィールド) |
| 定義域(ドメイン) | その属性が取りうる値の範囲 |
表の構造の定義を関係スキーマ、実際に入っているデータの値を実現値といいます。
DBMS:データベースを守り、動かす
データベースを管理するソフトウェアがDBMSです。ミドルウェアのレッスンで名前だけ登場しましたが、その機能を整理します。
- データベース定義機能は、スキーマを定義します。
- データベース操作機能は、データの検索や更新を行います。
- データベース制御機能は、複数の利用者が同時に使っても矛盾が起きないように制御します。同じデータへの同時の更新を防ぐ仕組みを同時実行制御(排他制御)といいます。
- 保全機能と障害回復は、故障が起きてもデータを失わず、正しい状態に戻します。
- データ機密保護機能(データセキュリティ)は、権限のない利用者からデータを守ります。
冒頭のお店の悩みは、まさにDBMSの制御機能と保全機能が解決してくれる問題です。
例題
次の問いに答えてください。
問1 関係モデルで、表の行に当たるものを何といいますか。
問2 複数の利用者が同じデータを同時に更新して矛盾が生じることを防ぐDBMSの仕組みを何といいますか。
解答と解説
問1の答えはタプル(組)です。表そのものは関係(リレーション)、列は属性と呼びます。日常の「表・行・列」との対応で覚えましょう。
問2の答えは同時実行制御(排他制御)です。一方の更新が終わるまでもう一方を待たせることで、更新のぶつかり合いを防ぎます。
応用
本試験を意識した問題を解いてみましょう。
問 データベースの3層スキーマのうち、利用者や個々のプログラムから見たデータの定義を表すものはどれでしょうか。次の中から選んでください。
- 外部スキーマ
- 概念スキーマ
- 内部スキーマ
- 関係スキーマ
解答と解説
答えは1の外部スキーマです。同じデータベースでも、利用者やプログラムごとに必要な見え方は異なるため、その見え方を外部スキーマとして定義します。2の概念スキーマはデータベース全体の論理的な構造を表す層で、特定の利用者の見え方ではありません。3の内部スキーマは記憶装置上の物理的な格納構造を表す層です。4の関係スキーマは関係モデルにおける表の構造の定義を指す用語であり、3層スキーマの層の名前ではありません。
分からなかった点・気になった点
読み込み中です。