目次
第1章 データベースの第一歩
1.1 データベースとは何か
- データとデータベース
- コンピュータ化されたデータベース
1.2 データベースとデータモデル
- データモデルとは
- 階層型データモデル
- ネットワーク型データモデル
- リレーショナルデータモデル
1.3 データベースの設計
- データベースの設計図「スキーマ」
- 3つのスキーマ
- スキーマを3階層にするメリット
1.4 最近のデータベースの流れ
- オブジェクト指向データベース
- XMLデータベース
- ORM
1.5 データベースの主なソフト
- 商用のリレーショナルデータベース
- オープンソースのリレーショナルデータベース
- 一般向けのリレーショナルデータベース
- 各種のデータベース
第2章 リレーショナルデータベースの考え方
2.1 「表」や「集合演算」が基本
- データを表形式で表す
- 集合演算でテーブルを組み合わせる
- リレーショナルデータベースに独自な「選択」「射影」「結合」
- null(ナル)について
- 様々な処理を組み合わせる
- リレーショナルデータベースとSQL
2.2 ER図(Entity-ralationship Diagram)でテーブルの関係を図示する
- ER図の必要性
- 実体(Entity)とは?
- 関連とは?
- 3種類の関連
2.3 テーブルの正規化
- 正規化するテーブルの例
- 1つの行/列に1つの値を入れる───第1正規形
- 主キーに部分関数従属する列を別テーブルに分ける───第2正規形
- 推移的に関数従属する列を別のテーブルに分ける───第3正規形
- その他の正規形
- 意図的に正規形を崩すこともある
2.4 結合のパターン
- 1対多結合
- 多対多結合
- 1対1結合
第3章 リレーショナルデータベースをコントロールする「SQL」
3.1 SQLの概要
- SQLの概要
- SQLの生い立ち
- DML/DDL/DCL
3.2 行を取り出す
- select命令でテーブルの行をすべて取り出す
- 射影を行う(テーブルから一部の列を取り出す)
- 選択を行う(一部の行を取り出す)
- 複数の条件を組み合わせて選択する
- 行の並べ替え
- 値が重複する行を除外する
3.3 テーブル内での計算や集計
- 列同士の計算
- 集計を行う
- グループ化して集計する
- 集計結果に条件を指定する
- 集計結果を並べ替える
3.4 テーブルを結合する
- 内部結合
- 外部結合
- 自己結合
- 結合のselect文の様々な書き方
3.5 副問い合わせと相関副問い合わせ
- 副問い合わせの概要
- where句の条件に副問い合わせを使う
- 副問い合わせの結果をテーブルのように扱う
- 相関副問い合わせの概要
3.6 テーブルの作成と行の挿入等の操作
- テーブルの作成───create table命令
- 行の作成───insert命令
- 行の内容の変更───update命令
- 行の削除───delete命令
第4章 より高度なデータベース処理
4.1 ユーザ/権限/ロールの設定
- ユーザとは?
- ユーザ操作関係のSQL
- ユーザに権限を与える
- 権限操作関係のSQL
- 複数の権限を「ロール」にまとめる
4.2 ビューの作成
- ビュー(View)とは?
- ビューに関するSQL
- ビューの使い道
4.3 テーブルや列に制約を設定する
- 制約の概要
- 一意性制約
- 非null制約
- 主キー制約
- 検査制約
- 参照制約
- テーブル作成後の制約の追加と削除
4.4 インデックスで検索を高速化する
- インデックスとは?
- インデックスとB木
- 適切なインデックス付けが必要
- インデックスに関するSQL
4.5 データベース側で各種の処理を実行する───ストアドプロシージャ
- ストアドプロシージャの仕組み
- ストアドプロシージャのメリットとデメリット
- ストアドプロシージャの作成や実行
4.6 各種のタイミングで処理を自動的に行う───トリガ
- トリガの仕組み
- 文単位のトリガと行単位のトリガ
- トリガの連鎖(カスケード)
- トリガの作成や実行
4.7 トランザクションと障害対策
- 一連の処理が途中で失敗するとどうなる?
- トランザクションで処理を確実に行う
- ACID特性
- トランザクションの処理
- データベースの障害
- バックアップ/チェックポイント/ログ
- システム障害からの復旧
4.8 同時に多数のユーザがデータベースにアクセスできるようにする(同時実行制御)
- 2つの処理が同時にテーブルを更新するとどうなる?
- 「ロック」で問題を解決する
- ロック中にさらにロックをかけようとした場合(ロックの競合)
- ロックの細かさ(粒度)
- 二相(Two Phase)ロック
- デッドロック
- トランザクション分離レベルの指定
- 同時実行制御に関するSQL
4.9 複数のサーバにデータベースを分散する
- 分散データベース
- 分散データベースの要件
- サーバの分散形式
- テーブルの分割
- 分散問い合わせ処理とその効率化
- 分散トランザクション
- レプリケーション(複製)
4.10 インターネットとデータベース
- Webアプリケーションと3層クライアント・サーバシステム
- セキュリティの問題