データベースの基本
informationdatabaseundergraduatelecture
data/lecture/information/database/database-portal.lecture.n.md
1導入
この講義では、データベース管理システムによってデータを永続的かつ一貫して管理するための基本概念を説明する。特に、関係モデルの構成要素、キーと整合性制約、正規化の目的、トランザクションの ACID 特性を導入する。
HTTP サーバは要求を処理し、必要に応じて表現を生成するが、利用者、商品、注文などのデータは個々の通信が終了した後にも保持される。このようなデータを複数のプログラムや利用者から安全に共有するには、保存形式だけでなく、制約、同時実行、障害からの回復を管理する仕組みが必要である。
2データベースと DBMS
データベースとは、特定の目的に従って組織化され、永続的に管理されるデータの集合である。
データベース管理システムとは、データベースの定義、保存、検索、更新、アクセス制御、同時実行制御、障害回復などを提供するソフトウェアである。データベースが管理対象となるデータであるのに対し、DBMS はそのデータを管理する機構である。
3関係モデルの構成要素
関係モデルでは、データを関係として表現する。実装上は表として表示されることが多いが、関係は単なる行列形式のファイルではなく、属性とタプルからなる数学的な構造である。
- 属性は、データを特徴づける名前の付いた項目である。
- ドメインは、ある属性が取り得る値の集合である。
- タプルは、各属性に対応する値をまとめた一件のデータである。
- 関係スキーマは、関係名と属性の構成を定める。
- 関係インスタンスは、ある時点でスキーマに適合するタプルの集合である。
たとえば、学生を表現する関係スキーマを次のように記述できる。
\operatorname{Student}(\mathit{student\_id},\ \mathit{name},\ \mathit{department\_id})
この場合、student_id、name、department_id が属性であり、個々の学生に対応する値の組がタプルである。
4キー
スーパーキーとは、関係スキーマで許容されるすべてのインスタンスにおいて、各タプルを一意に識別することが制約された属性集合である。候補キーとは、いずれの真部分集合もスーパーキーではない極小なスーパーキーである。
主キーとは、候補キーのうち、タプルの主要な識別子として選択したものである。候補キーは複数存在し得るが、主キーとして選択するものは一つである。
外部キーとは、ある関係の属性集合であり、その値が同一または別の関係の候補キーを参照する。たとえば、Student.department_id が学部の関係にある Department.department_id を参照すれば、学生と所属学部を関連づけられる。
5整合性制約
整合性制約とは、データベースの状態が満たすべき条件である。代表的な制約には、次のものがある。
- ドメイン制約は、属性値を所定のドメインへ制限する。
- キー制約は、候補キーの値がタプルを一意に識別することを要求する。
- 実体整合性は、主キーの構成属性が欠損せず、各タプルを識別できることを要求する。
- 参照整合性は、外部キーの非空の値が参照先に存在することを要求する。
DBMS はこれらの制約に違反する更新を拒否し、または宣言された参照動作に従って関連するデータを更新する。ただし、データが現実世界を正確に反映しているかどうかは、スキーマに表現された制約だけでは完全に保証できない。
6正規化の目的
同一の事実を複数箇所へ記録すると、一部だけを更新することによる不整合、データを追加できない状況、削除に伴う別の事実の消失が生じ得る。これらをそれぞれ更新、挿入、削除の異常という。
正規化とは、属性間の依存関係に基づいて関係スキーマを分解し、望ましくない冗長性と更新異常を抑制するための設計過程である。正規化はあらゆる重複を消去することではなく、依存関係を適切に表現することを目的とする。性能や利用形態に応じて、意図的に冗長性を導入する非正規化もある。
7トランザクションと ACID
トランザクションとは、DBMS が一つの論理的な作業単位として扱う操作列である。たとえば送金では、一方の口座からの減額と他方の口座への増額を一体として処理する必要がある。
トランザクションの代表的な特性を ACID と総称する。
- 原子性: トランザクションの全操作を反映するか、いずれも反映しない。
- 一貫性: トランザクションが正しく実行されると、制約を満たす状態から別のそのような状態へ移行する。
- 独立性: 並行するトランザクションの干渉を制御し、所定の分離レベルに対応する観測結果を提供する。
- 永続性: 確定したトランザクションの結果は、以後の障害に対して保持される。
ACID は実装方式そのものではなく、トランザクション処理が目標とする性質である。また、一貫性は DBMS だけで自動的に得られるものではなく、適切な制約と正しいトランザクション処理を必要とする。
8要点
- データベースは組織化されたデータであり、DBMS はその定義、操作、保護を担う。
- 関係スキーマは属性の構成を定め、関係インスタンスはある時点のタプルの集合である。
- 候補キー、主キー、外部キー、および整合性制約は、データの識別と関連を表現する。
- 正規化は望ましくない冗長性と更新異常を抑制し、トランザクションは複数の操作を論理的な単位として管理する。
9次に進む講義
data/lecture/information/database/sql-basics.lecture.n.md