データベース

対応するシラバスの範囲(応用情報技術者試験シラバス 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定理では可用性と分断耐性を優先。ナンス値を探すのがマイニング

← 応用情報技術者試験のまとめ一覧に戻る

タイトルとURLをコピーしました