[[SQL]]
#norelated
#contents

* 達人に学ぶDB設計 徹底指南書 [#hd88354e]
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4798124702/vertex9-22/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61bMuQNwkoL._SL160_.jpg" border="0"></a></td><td> </td><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4798124702/vertex9-22/" target="_blank">達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ</a><br>ミック<br>翔泳社<br>2012-03-16<br>¥ 2808</td></tr></table>
}}

* 学習メモ [#f9446939]
|頁+行|章節|項目|日付|h
//| [[書名_p_L]] | | | |

* 目次 [#a02ef7a5]
第1章 データベースを制する者はシステムを制す

1-1 システムとデータベース
   データ処理としてのシステム
   データと情報
1-2 データベースあれこれ
   データベースの代表的なモデル
   DBMSの違いは設計に影響するか?
1-3 システム開発の工程と設計
   システム開発の設計工程
   設計工程と開発モデル
1-4 設計工程とデータベース
   DOAとPOA
   3層スキーマ
   概念スキーマとデータ独立性
   演習問題

第2章 論理設計と物理設計

2-1 概念スキーマと論理設計
   論理設計のステップ
   エンティティの抽出
   エンティティの定義
   正規化
   ER図の作成
2-2 内部スキーマと物理設計
   物理設計のステップ
   テーブル定義
   インデックス定義
   ハードウェアのサイジング
   ストレージの冗長構成
   ファイルの物理配置
2-3 バックアップ設計
   バックアップの基本分類
   完全/差分/増分
   フルバックアップ
   差分バックアップ
   増分バックアップ
   バックアップ方式にもトレードオフがある
   どんなバックアップ方式を採用すべきか?
2-4 リカバリ設計
   リカバリとリストア
   リストアとロールフォワード
   演習問題

第3章 論理設計と正規化 ~なぜテーブルは分割する必要があるのか?

3-1 テーブルとは何か?
   二次元表≠テーブル
3-2 テーブルの構成要素
   行と列
   キー
   制約
   テーブルと列の名前
3-3 正規化とは何か?
   正規形の定義
3-4 第1正規形
   第1正規形の定義 ~スカラ値の原則
   第1正規形を作ろう
   なぜ一つのセルに複数の値を入れてはダメなのか? ~関数従属性
3-5 第2正規形 ~部分関数従属
   第2正規化を行う
   第2正規形でないと何が悪いのか?
   無損失分解と情報の保存
3-6 第3正規形 ~推移的関数従属
   推移的関数従属
   第3正規化を行う
3-7 ボイス-コッド正規形
   3次と4次の狭間
   ボイス-コッド正規化を行う
3-8 第4正規形
   多値従属性 ~キーと集合の対応
   第4正規化を行う
   第4正規形の意義
3-9 第5正規形
   第5正規化を行う
3-10 正規化についてのまとめ
   正規化の三つのポイント
   世紀かは常にするべきか?
   演習問題

第4章 ER図 ~複数のテーブルの関係を表現する

4-1 テーブルが多すぎる!
4-2 テーブル同士の関連を見抜く
   1対1、1対多、多対多
4-3 ER図の描き方
   テーブル(エンティティ)の表記方法
   IE表記法でER図を描く
   IDEF1XでER図を描く
4-4 「多対多」と関連実体
   演習問題

第5章 論理設計とパフォーマンス ~正規化の欠点と非正規化

5-1 正規化の功罪
   正規化とSQL(検索)
   正規化とSQL(更新)
   正規化と非正規化、どちらが正解なのか?
5-2 非正規化とパフォーマンス
   サマリデータの冗長性とパフォーマンス
   選択条件の冗長性とパフォーマンス
5-3 冗長性とパフォーマンスのトレードオフ
   更新時のパフォーマンス
   データのリアルタイム性
   改修コストの大きさ
   演習問題

第6章 データベースとパフォーマンス

6-1 データベースのパフォーマンスを決める要因
   インデックス
   統計情報
6-2 インデックス設計
   まずはB-treeインデックスから
   B-treeインデックスの長所
   B-treeインデックスの構造
6-3 B-treeインデックスの設計方針
   B-treeインデックスはどの列に作れば良いか?
   B-treeインデックスとテーブルの規模
   B-treeインデックスとカーディナリティ
   B-treeインデックスとSQL
   B-treeインデックスに関するその他の注意事項
6-4 統計情報
   オプティマイザと実行計画
   統計情報の設計指針
   演習問題

第7章 論理設計のバッドノウハウ

7-1 論理設計の「やってはいけない」
7-2 非スカラ値(第1正規形未満)
   配列型による非スカラ値
   スカラ値の基準は何か?
7-3 ダブルミーニング
   この列の意味は何でしょう?
   テーブルの列は「変数」ではない
7-4 単一参照テーブル
   多すぎるテーブルをまとめたい?
   単一参照テーブルの功罪
7-5 テーブル分割
   テーブル分割の種類
   水平分割
   垂直分割
   集約
7-6 不適切なキー
   キーは永遠に不変です!
   同じデータを意味するキーは同じデータ型にすべし
7-7 ダブルマスタ
   ダブルマスタはSQLを複雑にし、パフォーマンスを悪化させる
   ダブルマスタはなぜ生じるのか
   演習問題

第8章 論理設計のグレーノウハウ

8-1 違法すれすれの「ライン上」に位置する設計
8-2 代理キー ~主キーが役に立たないとき
   主キーが決められない、または主キーとして不十分なケース
   代理キーによる解決
   自然キーによる解決
   インターバル
   オートナンバリングの是非
8-3 列持ちテーブル
   配列型は使えない、でも配列を表現したい
   列持ちテーブルの利点と欠点
   行持ちテーブル
8-4 アドホックな集計キー
8-5 多段ビュー
   ビューへのアクセスは「2段階」で行われる
   多段ビューの危険性
8-6 データクレンジングの重要性
   データクレンジングは設計に先立って行う
   代表的なデータクレンジングの内容
   演習問題

第9章 一歩進んだ論理設計 ~SQLで木構造を扱う

9-1 リレーショナルデータベースのアキレス腱
   木構造とは?
9-2 伝統的な解法 ~隣接リストモデル
9-3 新しい解法 ~入れ子集合モデル
   入れ子集合モデルを使った検索
   入れ子集合モデルを使った更新
9-4 もしも無限の資源があったなら ~入れ子区間モデル
   使っても使っても尽きない資源
   入れ子区間モデルを使った更新
9-5 ノードをフォルダだと思え ~経路列挙モデル
   ファイルシステムとしての階層
   経路列挙モデルによる検索
   経路列挙モデルを使った更新
9-6 各モデルのまとめ
   演習問題

付録 演習問題の解答

第1章 解答
   演習1-1 DBMSの情報確認
   演習1-2 アプリケーション改修のタイプとコスト
第2章 解答
   演習2-1 データベースサーバーのクラスタリング構成
   演習2-2 ハードウェアリソースの情報取得
   演習2-3 サーバーCPUの机上サイジング
第3章 解答
   演習3-1 正規形の次数
   演習3-2 関数従属性
   演習3-3 正規化
第4章 解答
   演習4-1 ER図
   演習4-2 関連エンティティ
   演習4-3 多対多の関連
第5章 解答
   演習5-1 正規化されたテーブルに対するSQL
   演習5-2 非正規化によるSQLチューニング
第6章 解答
   演習6-1 ビットマップインデックスとハッシュインデックス
   演習6-2 インデックスの再編成
第7章 解答
   演習7-1 パーティションの特徴
   演習7-2 マテリアライズドビューの機能
第8章 解答
   演習8-1 ビジネスロジックの実装方法の検討
   演習8-2 一時テーブル
第9章 解答
   演習9-1 木構造を扱うモデルの正規形
   演習9-2 実数のデータ型

索引

* 出版社 [#ya613285]
- 達人に学ぶDB設計 徹底指南書 ~初級者で終わりたくないあなたへ(ミック) | 翔泳社の本
http://www.shoeisha.co.jp/book/detail/9784798124704

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS