{
  "format": "shikakustudy-deck",
  "formatVersion": 1,
  "slug": "db-gogo-kata-tango",
  "title": "データベーススペシャリスト 午後対策 ── SQLと正規化の型",
  "examName": "データベーススペシャリスト",
  "cards": [
    {
      "front": "概念データモデル",
      "back": "実装の制約を考えずに、業務の対象を表したモデル。ER図で表す。"
    },
    {
      "front": "エンティティタイプ",
      "back": "管理対象の種類。長方形で書く。"
    },
    {
      "front": "インスタンス",
      "back": "エンティティタイプの1つ1つの実体。"
    },
    {
      "front": "リレーションシップ",
      "back": "エンティティタイプ間の関連。線で表す。"
    },
    {
      "front": "多重度（カーディナリティ）",
      "back": "1対1、1対多、多対多の区別。"
    },
    {
      "front": "交差エンティティ",
      "back": "多対多を解消するために間に置くエンティティタイプ。"
    },
    {
      "front": "自己参照（再帰）",
      "back": "同じエンティティタイプ同士の関連。組織の上下、部品表など。"
    },
    {
      "front": "スーパータイプ",
      "back": "サブタイプの上位にあるエンティティタイプ。"
    },
    {
      "front": "サブタイプ",
      "back": "種類ごとに固有の属性を持つ下位のエンティティタイプ。"
    },
    {
      "front": "切り口",
      "back": "サブタイプに分ける基準となる属性。「〜区分」「〜種別」。"
    },
    {
      "front": "マスター",
      "back": "先に登録され、あまり増えないもの。得意先、商品、社員。"
    },
    {
      "front": "トランザクション（データ）",
      "back": "業務が動くたびに増えるもの。受注、出荷、実績。"
    },
    {
      "front": "生起",
      "back": "あるトランザクションが別のトランザクションを生むこと。IPAの用語。"
    },
    {
      "front": "ヘッダと明細",
      "back": "伝票のヘッダ部と繰り返し部。エンティティタイプも2つに分かれる。"
    },
    {
      "front": "DDL",
      "back": "データ定義言語。CREATE、ALTER、DROP。"
    },
    {
      "front": "DML",
      "back": "データ操作言語。SELECT、INSERT、UPDATE、DELETE。"
    },
    {
      "front": "DCL",
      "back": "データ制御言語。GRANT、REVOKE、COMMIT、ROLLBACK。"
    },
    {
      "front": "内部結合（INNER JOIN）",
      "back": "両側に相手がある行だけを返す結合。"
    },
    {
      "front": "外部結合（OUTER JOIN）",
      "back": "相手がない行も残し、NULLで埋める結合。LEFT／RIGHT／FULL。"
    },
    {
      "front": "交差結合（CROSS JOIN）",
      "back": "すべての組み合わせを作る結合。"
    },
    {
      "front": "自己結合",
      "back": "同じ表を2回使う結合。"
    },
    {
      "front": "ON句",
      "back": "結合の条件。外部結合では、合わなくても左の行が残る。"
    },
    {
      "front": "WHERE句",
      "back": "結合後の絞り込み。合わない行は消える。"
    },
    {
      "front": "GROUP BY",
      "back": "グループごとにまとめる。行が減る。"
    },
    {
      "front": "HAVING",
      "back": "集計結果に対する絞り込み。"
    },
    {
      "front": "集約関数",
      "back": "COUNT、SUM、AVG、MAX、MIN。"
    },
    {
      "front": "COUNT(*)とCOUNT(列)",
      "back": "前者はNULLも数える、後者はNULLを除く。"
    },
    {
      "front": "COALESCE",
      "back": "NULLを別の値に置き換える関数。"
    },
    {
      "front": "IS NULL",
      "back": "NULLかどうかの判定。= NULL とは書けない。"
    },
    {
      "front": "ウィンドウ関数",
      "back": "行を残したままグループごとの計算をする関数。OVER句を使う。"
    },
    {
      "front": "PARTITION BY",
      "back": "ウィンドウ関数のグループ分け。"
    },
    {
      "front": "RANK／ROW_NUMBER",
      "back": "順位を付けるウィンドウ関数。"
    },
    {
      "front": "LAG／LEAD",
      "back": "前後の行の値を取るウィンドウ関数。"
    },
    {
      "front": "副問合せ",
      "back": "SELECT文の中のSELECT文。"
    },
    {
      "front": "相関副問合せ",
      "back": "外側の表の列を参照する副問合せ。"
    },
    {
      "front": "EXISTS",
      "back": "存在判定。NOT INと違いNULLの影響を受けない。"
    },
    {
      "front": "ビュー",
      "back": "問合せに名前を付けたもの。"
    },
    {
      "front": "カーソル",
      "back": "結果を1行ずつ処理する仕組み。"
    },
    {
      "front": "FOR UPDATE",
      "back": "読んだ時点で専有ロックを取る指定。"
    },
    {
      "front": "トリガ",
      "back": "更新をきっかけに自動実行される処理。BEFORE／AFTER。"
    },
    {
      "front": "表領域",
      "back": "表を格納する物理的な入れ物。"
    },
    {
      "front": "ページ（ブロック）",
      "back": "入出力の単位。"
    },
    {
      "front": "空き領域率",
      "back": "ページに残す空きの割合。更新時の行移動を防ぐ。"
    },
    {
      "front": "索引（インデックス）",
      "back": "検索を速くする仕組み。B木索引が一般的。"
    },
    {
      "front": "複合索引",
      "back": "複数の列からなる索引。先頭の列から順に効く。"
    },
    {
      "front": "クラスター性",
      "back": "索引順と行の物理配置の一致度。"
    },
    {
      "front": "主索引",
      "back": "主キーに作られる索引。"
    },
    {
      "front": "表探索（フルスキャン）",
      "back": "索引を使わず全行を読むこと。"
    },
    {
      "front": "選択率",
      "back": "条件で絞り込める割合。低いほど索引が効く。"
    },
    {
      "front": "統計情報",
      "back": "行数や値の分布。オプティマイザが実行計画を選ぶ材料。"
    },
    {
      "front": "オプティマイザ",
      "back": "SQLの実行計画を決める仕組み。"
    },
    {
      "front": "実行計画（アクセスパス）",
      "back": "どの索引をどう使うかの計画。"
    },
    {
      "front": "区分化（パーティション）",
      "back": "表を複数の区分に分ける。レンジ区分／ハッシュ区分。"
    },
    {
      "front": "区分の刈り込み",
      "back": "検索条件から不要な区分を読まずに済ませること。"
    },
    {
      "front": "再編成",
      "back": "断片化した表や索引を作り直すこと。"
    },
    {
      "front": "バッファプール",
      "back": "ディスクの内容を保持するメモリ領域。"
    },
    {
      "front": "バッファヒット率",
      "back": "要求のうちメモリで済んだ割合。"
    },
    {
      "front": "ACID特性",
      "back": "原子性、一貫性、独立性、耐久性。"
    },
    {
      "front": "BASE特性",
      "back": "結果整合性を重視する考え方。可用性を優先する。"
    },
    {
      "front": "コミット",
      "back": "トランザクションを確定させる。"
    },
    {
      "front": "ロールバック",
      "back": "トランザクションを取り消す。"
    },
    {
      "front": "共有ロック",
      "back": "読むためのロック。他の共有ロックと共存できる。"
    },
    {
      "front": "専有ロック",
      "back": "更新するためのロック。他のロックと共存できない。"
    },
    {
      "front": "ロック粒度",
      "back": "行・ページ・表など、ロックする単位。"
    },
    {
      "front": "デッドロック",
      "back": "互いに逆順でロックし、両方が待ち続ける状態。"
    },
    {
      "front": "分離レベル",
      "back": "他のトランザクションの影響をどこまで遮断するか。"
    },
    {
      "front": "ダーティリード",
      "back": "コミットされていない値を読んでしまうこと。"
    },
    {
      "front": "ファントムリード",
      "back": "同じ条件で読み直すと行が増減していること。"
    },
    {
      "front": "2相コミット",
      "back": "分散した複数のデータベースを一括で確定させる手順。"
    },
    {
      "front": "ロールフォワード",
      "back": "バックアップに更新後ログを適用し、障害直前まで進める。媒体障害で使う。"
    },
    {
      "front": "再始動処理",
      "back": "ロールバックとロールフォワードの組み合わせ。システム障害で使う。"
    },
    {
      "front": "チェックポイント",
      "back": "再始動時の起点となる時点。"
    },
    {
      "front": "RPO／RTO",
      "back": "目標復旧時点／目標復旧時間。"
    },
    {
      "front": "レプリケーション",
      "back": "複製を別の場所に保持する仕組み。同期型と非同期型がある。"
    },
    {
      "front": "参照制約",
      "back": "外部キーの参照先が存在することを保証する制約。"
    },
    {
      "front": "RESTRICT／CASCADE／SET NULL",
      "back": "参照先を削除したときの動作の指定。"
    },
    {
      "front": "検査制約（CHECK）",
      "back": "列の値の範囲を制限する制約。"
    },
    {
      "front": "一意性制約",
      "back": "重複を許さない制約。"
    },
    {
      "front": "対象",
      "back": "データベーススペシャリスト試験の午後Ⅰ 8回分＝24問、午後Ⅱ 8回分＝16問（合計40問）"
    },
    {
      "front": "期間",
      "back": "平成30年度春期（2018年4月）〜令和7年度秋期（2025年10月）"
    },
    {
      "front": "資料",
      "back": "IPA公式の問題冊子・解答例・採点講評PDF、および午前Ⅱの問題・解答例。計64本。"
    }
  ]
}
