対応するシラバスの範囲(応用情報技術者試験シラバス Ver.7.2):大分類「技術要素」の中分類9「データベース」
一言で言うと
- E-R図と正規化、関係演算とSQL、トランザクションと障害回復、分散データベース、データウェアハウス、ブロックチェーン
覚え方の軸
データベース設計
- 設計は「意味 → 形 → 速さ」の順
- 3層スキーマは「外・概念・内」と「論理独立・物理独立」の対応
- E-R図は「エンティティ」と「関連」の2つだけで描く
- 強と弱は「ひとりで存在できるか」
関係データベース
- 呼び名は「関係モデル ⇔ 関係データベース」で対応させる
- キーは「広い → 狭い → 1つ選ぶ」
- NULLを許すかで区別する
- 外部キーは「多」の側に置く
正規化
- 正規化は「繰返し → 部分 → 推移」の順に取り除く
- 関数従属は「何が決まれば何が決まるか」
- 第2正規化がいるのは「主キーが複合キーのときだけ」
- 正規化しないと起きる更新時異常は3つ
- 分けた表には、元の表の主キーを外部キーとして残す(結合で元に戻せるように)
関係データベースの演算
- 集合演算は「同じ形の表どうし」の3つと、「形が違ってもよい」直積
- 選択は「行」、射影は「列」
- 結合は「直積して、選択して、重複列を消す」
- 商は「全部そろっている人を探す」
SQLの基本(SELECT・条件・集計)
- SELECTは「書く順」と「動く順」が違う
- NULLは「=」で比べられない
SQLの応用(結合・副問合せ・データ更新)
- 結合は「どちらを基準に残すか」で分ける
- 副問合せは「1つの値ならイコール、複数ならIN、あるかないかならEXISTS」
- 参照動作は「消せない(NO ACTION・RESTRICT)、連鎖(CASCADE)、置き換え(SET DEFAULT・SET NULL)」
データ定義言語
- 制約は「一意・参照・検査・非NULL・既定値」の5つ
- 複数の列にまたがるキーは「表制約」で書く
- ビューは「実体のない窓」
- 権限は「GRANTで与えてREVOKEで取る」
埋込み方式
- SQLの決まり方は「前から決まっているか、実行中に決まるか」
- 取り出す行数で方式が分かれる
- カーソル処理は「宣言 → 開く → 取り出す(繰返し)→ 閉じる」
- ホスト変数には「:」を付ける
トランザクションと同時実行制御
- ACIDは「全部かゼロか・矛盾なし・混ざらない・消えない」
- ロックは「読むなら共有、書くなら専有」
障害回復
- 障害回復は「COMMIT済みは前へ(redo)、未COMMITは後ろへ(undo)」
問合せの効率化とチューニング
- インデックスは「よく絞り込む列に。でも効かない場合が5つ」
分散データベース
- 透過性は「意識しなくてよいもの」の名前
- サイト間の結合は「送る量を減らす」工夫
- 更新の同期は「後でそろえる(非同期)か、すぐそろえる(同期)か」
- 2相コミットは「まず全員に聞いて、全員OKなら実行」
データベース応用
- データウェアハウスは「集めて(ETL)、ためて、切り出す(データマート)」
- OLAPは「切る・掘る・まとめる・回す」
- NoSQLは4種類、合言葉は「キー・カラム・ドキュメント・グラフ」
- ビッグデータは「3V」
ブロックチェーン
- ブロックチェーンの特徴は「改ざん不可能、高い可用性、高い透明性」
- CAP定理は「3つのうち2つまで」
- マイニングは「条件に合うハッシュ値になるナンス値を総当たりで探す」
ページ一覧
| テーマ | 何の話か |
|---|---|
| データベース設計 | 概念設計(E-R図)→ 論理設計(表・キー・制約)→ 物理設計(インデックス・分割)の順に作る。3層スキーマ(外部・概念・内部)でデータの独立性を守る。多対多は連関エンティティで分ける |
| 関係データベース | 関係=表、タプル=行、属性=列。キーはスーパキー → 候補キー → 主キー(残りが代理キー)。外部キーと参照制約で表をつなぐ |
| 正規化 | 関数従属を手がかりに、繰返し(第1)→ 部分関数従属(第2)→ 推移的関数従属(第3)を取り除き、更新時異常(修正・挿入・削除)を防ぐ。速さのために非正規化もある |
| 関係データベースの演算 | 集合演算(和・共通・差・直積)と関係演算(選択=行、射影=列、結合、商)。直積は列が足し算・行が掛け算 |
| SQLの基本(SELECT・条件・集計) | SQL文の種類と、SELECT文が動く順番、条件・集計・並べ替えの書き方 |
| SQLの応用(結合・副問合せ・データ更新) | 内結合と外結合、副問合せとEXISTS、WITH句とCASE式、データの追加・変更・削除と参照動作 |
| データ定義言語 | CREATE TABLEで制約(PRIMARY KEY、UNIQUE、REFERENCES、CHECK、NOT NULL、DEFAULT)を付ける。ビューは仮想表(集合関数やGROUP BYがあると更新不可)。権限はGRANTとREVOKE |
| 埋込み方式 | プログラムにSQLを埋め込む。1行はSELECT…INTO、複数行はカーソル(DECLARE → OPEN → FETCH → CLOSE)。ホスト変数には「:」 |
| トランザクションと同時実行制御 | ACID特性と、ロック・デッドロック・2相ロック・MVCCによる同時実行制御 |
| 障害回復 | ログとチェックポイントを使った障害回復、バックアップ、RPOとRTO |
| 問合せの効率化とチューニング | インデックスとオプティマイザによる問合せの効率化、分割や再編成によるチューニング |
| 分散データベース | 6つの透過性で1つのDBに見せる。サイト間結合はセミジョイン法、入れ子ループ法はO(n²)。更新同期はレプリケーション(非同期)と2相コミットメント制御(同期、弱点はブロック状態) |
| データベース応用 | データウェアハウス(ETL、データマート)、OLAP(スライス・ドリルダウン・ロールアップ・ダイス)、スタースキーマ、データマイニング、NoSQL(4種類、BASE特性)、データレイク、データサイエンティスト |
| ブロックチェーン | 前のブロックのハッシュ値でつなぎ、P2Pで全員が持つ分散型台帳(改ざん不可能・高可用性・高透明性)。CAP定理では可用性と分断耐性を優先。ナンス値を探すのがマイニング |