データベーススペシャリスト 頻出重要用語集
全 40 語 収録習得済: 0 / 40★ 保存: 0

データベーススペシャリスト 頻出重要用語解説

第3正規形・ボイスコッド正規形・概念データモデル(E-R図)・スーパータイプ/サブタイプ・ウィンドウ関数・再帰SQL・トランザクション分離レベル・MVCC・B+木インデックス等のデータベース重要用語を完全網羅。「1行要約」「3行解説」「午後記述加点キーワード」で午後I・午後II記述対策を加速させます。

【索引】50音・英数インデックス:
【カテゴリ】専門分野:
出題フェーズ:
ステータス:
表示:
該当件数: 40 件 / 全 40 語
だいさんせいきけいとすいいてきかんすうじゅうぞくのはいじょ関数従属・正規化午前II午後I記述午後II小論文★★★

第3正規形(3NF)と推移的関数従属の排除

Third Normal Form (3NF)
1行解説(要点)
第2正規形を満たし、かつすべての非キー属性がいかなる候補キーに対しても推移的に関数従属しない関係スキーマの形式。
3行解説(詳細ポイント)
1候補キーX → 非キー属性Y → 非キー属性Z の「推移的関数従属」を別関係へ分解して排除する
2更新時異状(挿入異状・削除異状・修正異状)を防ぎ、事実を1箇所で管理するワンファクト・イン・ワンプレイスを実現
3午後I・午後IIでは「第3正規形でない根拠」の記述定型文が毎年のように出題される最重要テーマ
個別解説ページ
すーぱーたいぷさぶたいぷこうぞう概念設計・E-R図午前II午後I記述午後II小論文★★★

スーパータイプ・サブタイプ構造(汎化・特化)

Supertype / Subtype Hierarchy
1行解説(要点)
共通の属性・リレーションシップをもつ上位エンティティ(スーパータイプ)と、固有の属性・関連をもつ下位エンティティ(サブタイプ)に階層化するモデリング手法。
3行解説(詳細ポイント)
1複数のエンティティに共通する属性をスーパータイプにくくり出し(汎化)、区分ごとの固有属性・固有関連をサブタイプに定義(特化)
2排他的サブタイプ(中黒「●」あり)と共存的サブタイプ(中黒なし)、および複数の切り口による直交サブタイプを使い分ける
3関係スキーマではスーパータイプと同じ主キーをサブタイプに持たせ(1対1対応)、スーパータイプ側に区分属性を配置する
個別解説ページ
とらんざくしょんぶんりれべる排他制御・ACID午前II午後I記述午後II小論文★★★

トランザクション分離レベル(Isolation Level)

Transaction Isolation Level
1行解説(要点)
複数トランザクションの同時実行時に、ダーティリード・ノンリピータブルリード・ファントムリードのどの現象までを抑止するかを規定するSQL標準の4段階レベル。
3行解説(詳細ポイント)
1READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLEの4段階が存在
2分離レベルを高めるほどデータの一貫性は高まるが、ロック競合や直列化エラーにより同時実行性(スループット)は低下する
3READ COMMITTEDでのノンリピータブルリード対策にはSELECT ... FOR UPDATEや楽観的排他制御を併用する
個別解説ページ
でっどろっくのはっせいきこうとかいひせっけい排他制御・ACID午前II午後I記述午後II小論文★★★

デッドロック(Deadlock)の発生機構と回避設計

Deadlock Prevention and Resolution
1行解説(要点)
複数のトランザクションが互いに相手が保持するロックの解放を待ち続け、どちらも処理を進められなくなる膠着状態。
3行解説(詳細ポイント)
1複数テーブル(A→B と B→A)や同一テーブル内の複数行(主キー昇順と降順)を異なる順序でロック獲得すると発生する
2また同一行に対して2つのトランザクションが共有ロック取得後に専有ロックへ昇格(ロック変換)しようとした場合にも発生する
3回避策は「テーブル・行のロック獲得順序を全トランザクションで統一すること」および「最初からFOR UPDATEで専有ロックを取得すること」
個別解説ページ
くらすたさくいんとくらすたせい物理設計・性能・回復午前II午後I記述午後II小論文★★★

クラスタ索引(Clustered Index)とクラスタ性

Clustered Index and Clustering Factor
1行解説(要点)
索引キーの順序とデータページ内の実レコードの物理格納順序を一致させることで、範囲検索や複数行取得時のページI/O回数を劇的に削減する索引構造。
3行解説(詳細ポイント)
11つのテーブルに対して物理的な並び順は1つしか持てないため、クラスタ索引は1テーブルにつき最大1個のみ定義可能
2クラスタ性が高い索引では、同じキー値や連続するキー範囲の行が同一データページに密集して格納される
3非クラスタ索引では1行ごとに異なるデータページへランダムアクセスが発生し得るが、クラスタ索引では最小限のページ読込みで済む
個別解説ページ
にそうこみっとぷろとこる分散DB・NoSQL・DWH午前II午後I記述午後II小論文★★★

2相コミットプロトコル(2PC: Two-Phase Commit)

Two-Phase Commit Protocol (2PC)
1行解説(要点)
複数のデータベースやサイトに跨がる分散トランザクションにおいて、調停者(コーディネータ)と参加者(パーティシパント)の間で第1相(コミット準備)と第2相(コミット実行)の2段階で原子性を保証するプロトコル。
3行解説(詳細ポイント)
1第1相(投票フェーズ):調停者が「コミット準備指示(Prepare)」を送り、全参加者がログを書き出して「準備完了(Yes)」または「不可(No)」を応答
2第2相(決定フェーズ):全員が準備完了なら「コミット実行指示」、1つでも不可・タイムアウトがあれば全員へ「ロールバック実行指示」を送信
3参加者が準備完了を返した直後から第2相の指示を受け取るまでの間は、コミットかロールバックか不確定な「In-doubt(不定)状態」となりロックを解放できない
個別解説ページ
うぃんどうかんすうSQL・関係代数午前II午後I記述午後II小論文★★★

ウィンドウ関数(分析関数:OVER / PARTITION BY)

SQL Window Functions
1行解説(要点)
GROUP BYのように行を1行に集約して折りたたむことなく、元の行を維持したままパーティション(グループ)内の集計値・順位・移動平均・前後行参照を算出するSQL機能。
3行解説(詳細ポイント)
1PARTITION BYでグループ化の単位を指定し、ORDER BYでウィンドウ内の並び順を指定する
2ROWS BETWEEN n PRECEDING AND m FOLLOWING により、前後n〜m行の移動平均・累積合計を1回のテーブル走査で計算可能
3ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD(), SUM(), AVG(), COUNT() などが午後I・午後IIのSQL穴埋めで頻出
個別解説ページ
かんすうじゅうぞくせいとあーむすとろんぐのこうり関数従属・正規化午前II午後I記述午後II小論文★★★

関数従属性(Functional Dependency)とアームストロングの公理

Functional Dependency & Armstrongs Axioms
1行解説(要点)
ある属性集合Xの値が決まると、別の属性集合Yの値がただ1つに一意決定される関係(X → Y)。
3行解説(詳細ポイント)
1決定項Xの値が同じであれば、従属項Yの値も常に同じになるという業務上の意味的制約を表す
2反射律・増加律・推移律(アームストロングの公理)および合併律・分解律・擬推移律によりすべての関数従属の閉包を導出できる
3すべての属性を関数従属させる極小の属性集合が「候補キー」となる
個別解説ページ
こうほきーしゅきーがいぶきーふくごうきー関数従属・正規化午前II午後I記述午後II小論文★★★

候補キー・主キー・外部キー・複合キー

Candidate Key, Primary Key, Foreign Key
1行解説(要点)
タプル(行)を一意に識別できる極小の属性集合(候補キー)と、その中から選ばれた主キー(実線下線)および他関係の主キーを参照する外部キー(破線下線)。
3行解説(詳細ポイント)
1一意性制約(全タプルを識別可能)と極小性制約(どの属性を除いても一意性が崩れる)の両方を満たすのが候補キー
2主キー(PK)はNULL値を許容せず(実体整合性制約)、外部キー(FK)は参照先の主キーに存在する値またはNULLのみをとる(参照整合性制約)
3午後I・午後IIの関係スキーマ完成問題では、主キー属性に実線下線、外部キー属性に破線下線を正確に引く力が問われる
個別解説ページ
ぼいすこっどせいきけいとだいよんせいきけい関数従属・正規化午前II午後I記述★★

ボイス・コッド正規形(BCNF)と第4正規形(4NF)

Boyce-Codd Normal Form (BCNF) & Fourth Normal Form (4NF)
1行解説(要点)
すべての非自明な関数従属 X → Y の決定項 X がスーパーキーである正規形(BCNF)と、非自明な多値従属性を排除した正規形(4NF)。
3行解説(詳細ポイント)
1第3正規形であっても、複数の複合候補キーが重複属性を持ち「非キー属性 → 候補キーの一部」の関数従属があるとBCNF違反となる
2独立した1対多の関連が1つの関係に同居すると「多値従属性(X →→ Y | Z)」が生じ、直積による冗長データが発生する
3多値従属性を別関係へ分解して排除することで第4正規形(4NF)となる
個別解説ページ
さんしょうせいやくとさくじょこうしんおぷしょんSQL・関係代数午前II午後I記述午後II小論文★★★

参照制約(FOREIGN KEY)と削除・更新オプション(RESTRICT / CASCADE / SET NULL)

Referential Integrity Actions (RESTRICT, CASCADE, SET NULL)
1行解説(要点)
被参照テーブル(親)の主キー行が削除・更新された際に、参照テーブル(子)の外部キー行をどのように扱うかを規定するDDL整合性オプション。
3行解説(詳細ポイント)
1RESTRICT(またはNO ACTION):子テーブルに参照している行が1件でも存在する場合、親テーブルの行の削除・更新を拒否(エラー)する
2CASCADE:親テーブルの行が削除・更新されたとき、それを参照している子テーブルの行も連動して自動的に削除・更新する
3SET NULL:親テーブルの行が削除・更新されたとき、子テーブルの外部キー列の値をNULLに変更する(ただし外部キー列がNOT NULLまたは主キーの一部の場合は設定不可)
個別解説ページ
せれくとふぉーあっぷでーと排他制御・ACID午前II午後I記述午後II小論文★★★

SELECT ... FOR UPDATE(悲観的排他制御・行レベル専有ロック)

SELECT ... FOR UPDATE (Pessimistic Row Locking)
1行解説(要点)
後続のUPDATE/DELETEに備えて、SELECT文による行読込みの時点で対象行に専有ロック(排他ロック)を掛け、他トランザクションからの更新や専有ロック取得をブロックするSQL句。
3行解説(詳細ポイント)
1READ COMMITTED環境で「在庫数をSELECTで確認してからアプリで引き当て計算しUPDATEする」際のロストアップデート(更新紛失)を防止する
2通常のSELECT(共有ロックまたはロックなし)の後にUPDATEするとデッドロックや二重引当てが起きるため、読込み時点で専有ロックを獲得する
3ただし画面表示からユーザーのボタン押下までトランザクションをまたぐ対話型処理ではロック保持時間が長くなるため、タイムスタンプ等による楽観的排他制御を用いる
個別解説ページ
らっかんてきはいたせいぎょ排他制御・ACID午前II午後I記述午後II小論文★★★

楽観的排他制御(タイムスタンプ方式・バージョン番号方式)

Optimistic Concurrency Control (OCC)
1行解説(要点)
データ読込み時にはロックを掛けず、更新(UPDATE)実行時に「読込み時点の最終更新タイムスタンプ(またはバージョン番号)と現在の値が一致するか」をWHERE句で検査して競合を検知する方式。
3行解説(詳細ポイント)
1データ取得時に主キー値とともに「最終更新TS(タイムスタンプ)列」または「更新カウンタ列」の値も取得しておく
2UPDATE文のWHERE句に `AND 最終更新TS = :取得したTS値` を指定し、同時にSET句で `最終更新TS = CURRENT_TIMESTAMP` に更新する
3更新件数が0件(SQLの状態コードが該当行なし)だった場合は、他者による割り込み更新があったと判定してロールバック・再試行またはエラー通知を行う
個別解説ページ
びーぷらすきさくいんのこうぞうとさくいんこうしんこすと物理設計・性能・回復午前II午後I記述午後II小論文★★★

B+木索引(B+-Tree Index)の構造と索引更新コスト

B+-Tree Index Structure and Maintenance Cost
1行解説(要点)
ルートページ・中間ページ・リーフページの平衡木構造をもち、すべてのリーフページを双方向ポインタで連結することで等値検索と範囲検索の両方を高速化するRDBMSの標準索引。
3行解説(詳細ポイント)
1ルートからすべてのリーフまでの深さ(段数)が常に等しい平衡木であり、O(log N)の少ないページ読込みで目的のキーに到達できる
2実データ行へのポインタ(ROWID/TID)はリーフページのみに保持され、リーフページ間がポインタで順序連結されているため範囲走査(Index Range Scan)が高速
3一方で、索引構成列の値がUPDATEされるたびに索引エントリーの削除・挿入および索引ページのロックが発生するため、頻繁に状態遷移する列への索引付与はロック競合の原因となる
個別解説ページ
ろぐせんこうかきこみとろーるふぉわーどろーるばっくかいふく物理設計・性能・回復午前II午後I記述午後II小論文★★★

WAL(ログ先行書込み)とロールフォワード・ロールバック回復

Write-Ahead Logging (WAL), Rollforward & Rollback Recovery
1行解説(要点)
データページをディスクへ書き出す前に必ずログ(REDO/UNDO情報)を不揮発性ストレージへ先行書き出しし、障害時にコミット済みの再現(ロールフォワード)と未コミットの取消(ロールバック)を行う障害回復機構。
3行解説(詳細ポイント)
1システム障害(メモリ消失)時は、最後のチェックポイントからREDOログで前進回復(ロールフォワード)し、障害発生時に未完了だったトランザクションをUNDOログで後退回復(ロールバック)する
2媒体障害(ディスク破損)時は、フルバックアップ(アーカイブ)を復元した上で、バックアップ取得時点以降のアーカイブREDOログを適用してロールフォワードする
3コミット時点でデータページ自体をディスクに書き出す必要はなく、ログバッファの内容さえログファイルへ同期書き出し(WAL)されれば永続性(Durability)が保証される
個別解説ページ
さがぱたーんとほしょうとらんざくしょん分散DB・NoSQL・DWH午前II午後I記述午後II小論文★★★

Sagaパターン(補償トランザクション)と結果整合性(BASE特性)

Saga Pattern, Compensating Transaction & BASE
1行解説(要点)
複数サービスに跨がる処理を各サービスのローカルトランザクションの連鎖として実行し、途中で失敗した場合は完了済みの処理を打ち消す「補償トランザクション」を実行して結果整合性を保つ分散設計パターン。
3行解説(詳細ポイント)
12相コミット(2PC)のように複数DBに跨がってロックを保持し続けないため、高可用性・高スループット(BASE特性)を実現できる
2一方で、ローカルトランザクション間の中間状態が外部から見える(分離性Isolationが緩和される)ため、取消完了まで一時的な不整合状態が生じ得る
3API再送やメッセージ重複に備える「べき等性(Idempotency:履歴テーブルでの処理済みチェック)」と、同時更新を防ぐ「セマフォフラグ(更新中フラグ)」の実装が必須
個別解説ページ
けつごうあるごりずむ物理設計・性能・回復午前II午後I記述午後II小論文★★★

結合アルゴリズム(Nested Loops法・Sort-Merge法・Hash法)

Join Algorithms (Nested Loops, Sort-Merge, Hash Join)
1行解説(要点)
RDBMSのクエリ(SQL)オプティマイザが複数テーブルを結合する際の代表的な3つの物理実行方式(入れ子ループ法、ソートマージ法、ハッシュ法)。
3行解説(詳細ポイント)
1Nested Loops(入れ子ループ)法:外部表(駆動表)の各行について内部表を探索する。外部表が小さく内部表の結合列に索引がある場合に最も高速
2Sort-Merge(ソートマージ)法:両方の表を結合列でソートしてから先頭から順に突き合わせる。既にソート済みの索引がある場合や不等号結合にも有効
3Hash(ハッシュ)法:小さい方の表(ビルド表)からメモリ上にハッシュ表を作成し、大きい方の表(プローブ表)を走査して等値結合する。索引がない大量データ同士の等値結合で高速
個別解説ページ
じゃくえんてぃてぃとしきべつりれーしょんしっぷ概念設計・E-R図午前II午後I記述午後II小論文★★★

弱エンティティ(依存エンティティ)と識別リレーションシップ

Weak Entity & Identifying Relationship
1行解説(要点)
自身の属性だけではインスタンスを一意に識別できず、親エンティティの主キーを自身の主キーの一部(複合主キー)として継承することで識別される従属エンティティ。
3行解説(詳細ポイント)
1「受注」に対する「受注明細」、「コース」に対する「セクション」、「テスト設問」に対する「テスト設問選択肢」などが代表例
2親エンティティの主キー(例:受注番号)を外部キーかつ主キーの一部として引き継ぎ、そこに枝番(例:受注明細番号)を加えて複合主キーを構成する
3親インスタンスが消滅すると弱エンティティも存在意味を失う(ライフサイクルを共にする)
個別解説ページ
じこさんしょうりれーしょんしっぷとぶひんひょうこうぞう概念設計・E-R図午前II午後I記述午後II小論文★★★

自己参照(再帰)リレーションシップと階層・部品表(BOM)構造

Recursive Relationship & Bill of Materials (BOM)
1行解説(要点)
同一のエンティティタイプ内のインスタンス同士が親子関係や前後関係をもつ構造を、自分自身へのリレーションシップまたは構成連関エンティティで表現するモデリングパターン。
3行解説(詳細ポイント)
11対多の階層構造(上位組織―下位組織、親コメント―返信コメント、上位品目分類―下位品目分類)は自分自身への1対多の自己参照リレーションシップで表す
2関係スキーマでは自テーブルの主キーを参照する外部キー(例:上位組織コード、親コメント#、後続棚番号)を非キー属性として追加する
3多対多のネットワーク構造(部品表BOM:親品目と子品目が多対多で結合)は「構成品目(部品構成)」エンティティを切り出し、品目から2本の1対多リレーションシップを引く
個別解説ページ
れんかんえんてぃてぃとたたいだのかいしょう概念設計・E-R図午前II午後I記述午後II小論文★★★

連関エンティティ(関連エンティティ)と多対多の解消

Associative Entity (Intersection Entity)
1行解説(要点)
2つ以上のエンティティ間の「多対多(M:N)」のリレーションシップを、双方の主キーを外部キー(かつ複合主キー)として持つ中間エンティティを導入して2つの「1対多(1:N)」に分解する手法。
3行解説(詳細ポイント)
1リレーショナルモデルでは多対多の関連を直接外部キーだけで表現できないため、必ず連関エンティティ(交差テーブル)へ分解する
2両側の親エンティティから連関エンティティへ向かって「1対多(矢印)」のリレーションシップを引く
3同じ組合せが時系列で複数回発生する場合(例:学生の講義受講や商談参加)は、日時や回数も複合主キーに加える
個別解説ページ
りれきかんりせだいかんりもでる概念設計・E-R図午後I記述午後II小論文★★★

履歴管理・世代管理モデル(有効期間・適用開始日・スナップショット)

Temporal & Historical Data Modeling
1行解説(要点)
単価・所属組織・契約条件など時間とともに変化する属性について、過去・現在・将来の状態を失わずに管理するための主キー・属性設計パターン。
3行解説(詳細ポイント)
1マスタに履歴を持たせる場合は、主キーに「適用開始年月日(または世代番号)」を加え、非キー属性に「適用終了年月日」を持たせる
2取引時点の単価や税率を確定保存する必要がある場合は、トランザクション明細側にも取引時点の属性値(スナップショット)を保持するかを業務要件から判断する
3状態遷移(予約→チェックイン→チェックアウト、受注→出荷→検収)を管理する場合は、状態ごとの日時属性やサブタイプ・別トランザクションへの分離を使い分ける
個別解説ページ
そうかんふくといあわせといぐじすつじゅつごSQL・関係代数午前II午後I記述午後II小論文★★★

相関副問合せとEXISTS / NOT EXISTS述語

Correlated Subquery & EXISTS / NOT EXISTS
1行解説(要点)
外側の主問合せの候補行の値を内側の副問合せの検索条件で参照しながら評価を行う副問合せと、条件を満たす行の存在有無を判定する述語。
3行解説(詳細ポイント)
1EXISTSは副問合せが1行でも結果を返した時点でTRUEとなり探索を打ち切るため、大量データに対する存在チェックで高速に動作する
2NOT IN は副問合せの結果に1件でもNULLが含まれると全体がUNKNOWN(結果0件)になる罠があるが、NOT EXISTSはNULLの影響を受けず安全に差集合(未登録・未実績行)を抽出できる
3二重否定(NOT EXISTS ... NOT EXISTS)を用いることで、関係代数の「商演算(すべての〇〇を満たす△△)」をSQLで表現できる
個別解説ページ
がいぶけつごうとこあれすかんすうSQL・関係代数午前II午後I記述午後II小論文★★★

外部結合(LEFT / RIGHT / FULL OUTER JOIN)とCOALESCE関数

Outer Join & COALESCE Function
1行解説(要点)
結合相手のテーブルに一致する行が存在しない場合でも、基準となるテーブルの行を結果に残し、相手側の列をNULLで補完して出力する結合演算。
3行解説(詳細ポイント)
1内部結合(INNER JOIN)では実績が0件のマスタ行(例:PJ未参加の従業員や売上0件の商品)が結果から消えてしまうため、全マスタ行を出すにはOUTER JOINを使う
2外部結合でNULLになった数値列を集計して「0」として表示するには `COALESCE(SUM(計画時間), 0)` のようにCOALESCE関数でNULLを0に置換する
3結合相手テーブルに対する絞り込み条件を `WHERE` 句に書くと内部結合と同じ結果になってしまうため、外部結合の相手側条件は必ず `ON` 句に記述する
個別解説ページ
きょうつうひょうしきとさいきくえりSQL・関係代数午前II午後I記述午後II小論文★★

共通表式(WITH句 / CTE)と再帰クエリ(WITH RECURSIVE)

Common Table Expression (CTE) & Recursive Query
1行解説(要点)
1つのSQL文のスコープ内で一時的な名前付き結果セット(導出表)を定義するWITH句と、自己参照によって階層・グラフ構造を反復探索するWITH RECURSIVE句。
3行解説(詳細ポイント)
1複雑な多段階の集計や中間結果を `WITH 一時表名 AS (SELECT ...)` として切り出すことで、SQLの可読性と再利用性を高める
2同じ一時表を主クエリ内で複数回参照できるため、重複する副問合せの記述を排除できる
3`WITH RECURSIVE` では非再帰項(初期集合)と再帰項を `UNION ALL` で結び、部品表(BOM)の展開や組織階層の探索を1つのSQLで実行できる
個別解説ページ
しゅうごうかんすうぐるーぷばいはびんぐくとけーすしきSQL・関係代数午前II午後I記述午後II小論文★★★

集合関数・GROUP BY・HAVING句とCASE式による条件付き集計

GROUP BY, HAVING & Conditional Aggregation with CASE
1行解説(要点)
指定列の値ごとにグループ化して集合関数を適用するGROUP BY句、グループ化後の集計結果に条件を課すHAVING句、およびCASE式を組み合わせて1回の走査で行・列変換や条件別集計を行う技法。
3行解説(詳細ポイント)
1SQLの論理的な評価順序は `FROM/JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY` である
2集合関数(COUNT(*)を除くSUM, AVG, MAX, MIN, COUNT(列名))はすべてNULL値を無視して計算を行い、対象行がすべてNULLの場合はNULLを返す(COUNTは0)
3`SUM(CASE WHEN 入退室区分 = 'I' THEN 1 ELSE 0 END)` のように集合関数の中にCASE式を入れることで、区分別の件数や金額を1行に横展開して集計できる
個別解説ページ
かんけいだいすうSQL・関係代数午前II★★★

関係代数(選択・射影・結合・商・集合演算)

Relational Algebra (Selection, Projection, Join, Division)
1行解説(要点)
関係(テーブル)を入力として新しい関係を出力するリレーショナルモデル固有の演算体系(選択、射影、結合、商)と伝統的集合演算(和、差、共通、直積)。
3行解説(詳細ポイント)
1選択(Selection: σ)は条件を満たす「行(タプル)」を取り出し、射影(Projection: π)は指定した「列(属性)」を取り出して重複行を排除する
2自然結合(Natural Join)は共通属性の値が等しいタプル同士を結合し、重複する共通属性列を1つにまとめる
3商(Division: R ÷ S)は、関係Sのすべてのタプルと組み合わさっている関係Rの属性値を取り出す演算であり、SQLでは二重のNOT EXISTSで記述される
個別解説ページ
あしっどとくせい排他制御・ACID午前II午後I記述午後II小論文★★★

ACID特性(原子性・一貫性・隔離性・耐久性)

ACID Properties (Atomicity, Consistency, Isolation, Durability)
1行解説(要点)
信頼性の高いトランザクション処理システムが満たすべき4つの基本性質(Atomicity: 原子性、Consistency: 一貫性、Isolation: 隔離性/独立性、Durability: 耐久性/永続性)。
3行解説(詳細ポイント)
1原子性(Atomicity):トランザクション内の操作が「すべて実行される(All)」か「1つも実行されない(Nothing)」かのいずれかであることを保証(UNDOログ/2PCで実現)
2一貫性(Consistency):トランザクションの前後でデータベースの整合性制約(主キー、外部キー、CHECK制約、業務不変条件)が常に満たされることを保証
3隔離性(Isolation:ロックやMVCCで実現)と耐久性(Durability:コミット後の結果が障害でも失われない性質、WALとREDOログで実現)
個別解説ページ
たばんどうじじっこうせいぎょとすなっぷしょっとぶんり排他制御・ACID午前II午後I記述午後II小論文★★

MVCC(多版同時実行制御)とスナップショット分離

Multi-Version Concurrency Control (MVCC)
1行解説(要点)
更新前の古いバージョンの行データ(版)を保持することで、読取り処理が書込み処理をブロックせず、書込み処理も読取り処理をブロックしない同時実行制御方式。
3行解説(詳細ポイント)
1更新トランザクションが対象行に専有ロックを掛けていても、参照トランザクションは更新前のバージョン(スナップショット)をロック待ちなしで読み取れる
2「読取りは書込みをブロックせず、書込みは読取りをブロックしない」ため、参照系と更新系が混在するOLTPシステムで高いスループットを発揮する
3ただし不要になった古いバージョン(デッドタプルやUNDOセグメント)の回収(VACUUMやガベージコレクション)や、書込みスキュー(Write Skew)への配慮が必要
個別解説ページ
てーぶるぶんかつぱーてぃしょにんぐ物理設計・性能・回復午前II午後I記述午後II小論文★★★

テーブル分割(パーティショニング:レンジ・ハッシュ・リスト)

Table Partitioning (Range, Hash, List)
1行解説(要点)
巨大なテーブルを論理的には1つのテーブルとして扱いつつ、物理的には分割キー(日付範囲・ハッシュ値・コードリスト)に基づいて複数のパーティション(格納領域)へ分割管理する物理設計技法。
3行解説(詳細ポイント)
1レンジ(範囲)分割:売上年月や履歴年月日などの範囲ごとに分割。過去データの月単位パージ(DROP/TRUNCATE PARTITION)が瞬時に完了し、検索時のパーティションプルーニングに有効
2ハッシュ分割:分割キーのハッシュ値で均等に振り分ける。特定キーへのアクセス集中(I/Oホットスポット)を分散させたい場合に有効
3リスト分割:地域コードや都道府県コード、ステータス区分など離散値のリストごとに分割管理する方式
個別解説ページ
すたーすきーますのーふれーくすきーま分散DB・NoSQL・DWH午前II午後I記述★★

スタースキーマ・スノーフレークスキーマ(DWH・多次元分析)

Star Schema & Snowflake Schema (Data Warehouse / OLAP)
1行解説(要点)
データウェアハウス(DWH)において、数値データを保持する中心の「ファクト表」と、分析軸(時間・商品・店舗・顧客等)を保持する周囲の「ディメンション表」を放射状に配置するデータモデル。
3行解説(詳細ポイント)
1スタースキーマではディメンション表をあえて非正規化(第2正規形など)して1階層にまとめ、ファクト表との結合(JOIN)回数を最小化してOLAP集計を高速化する
2ディメンション表を正規化して階層構造(例:店舗 → 市区町村 → 都道府県 → 地方)に分解したものをスノーフレークスキーマと呼ぶ
3OLAPの代表操作には、特定断面を切り出す「スライス」、複数軸で絞り込む「ダイス」、詳細階層へ掘り下げる「ドリルダウン」、上位階層へ集約する「ロールアップ(ドリルアップ)」がある
個別解説ページ
きゃっぷていりとのーえすきゅーえるでーたべーす分散DB・NoSQL・DWH午前II午後II小論文★★

CAP定理とNoSQLデータベース(KVS・ドキュメント・ワイドカラム・グラフ)

CAP Theorem & NoSQL Databases
1行解説(要点)
分散データストアにおいて「一貫性(C)」「可用性(A)」「ネットワーク分断耐性(P)」の3つのうち同時に満たせるのは最大2つであるという定理と、用途別の非リレーショナルDB分類。
3行解説(詳細ポイント)
1ネットワーク分断(P)が避けられない広域分散環境では、厳密な一貫性を優先する「CP型」か、応答可用性を優先し結果整合性(Eventual Consistency)をとる「AP型(BASE特性)」を選択する
2NoSQLはデータモデルにより①キー・バリュー型(KVS)、②ドキュメント型(JSON/BSON)、③ワイドカラム(列指向)型、④グラフ型(ノードとエッジ)の4種に大別される
3セッション管理・キャッシュにはKVS、スキーマレスな階層データにはドキュメント型、SNSの人間関係や経路探索にはグラフ型が適する
個別解説ページ
ふくごうさくいんとかばりんぐさくいん物理設計・性能・回復午前II午後I記述午後II小論文★★★

複合索引(Composite Index)とカバリング索引(Index-Only Scan)

Composite Index & Covering Index (Index-Only Scan)
1行解説(要点)
複数の列を組み合わせて定義した索引(複合索引)と、クエリが参照するすべての列を索引内に含めることでデータページへのアクセスをゼロにする最適化技法(カバリング索引)。
3行解説(詳細ポイント)
1複合索引 `(列A, 列B, 列C)` は先頭からの列順でソートされているため、`WHERE 列A = ?` や `WHERE 列A = ? AND 列B = ?` では効率よくレンジスキャンできる
2先頭列で範囲条件(不等号やBETWEEN)を使うと、それ以降の列(列B, 列C)はB+木の探索範囲絞り込みには使えないため、「等値条件の列を先頭、範囲条件の列を後ろ」に配置するのが原則
3SELECT句・WHERE句・GROUP BY句・ORDER BY句で必要な列がすべて索引に含まれていれば、リーフページを読むだけでクエリが完結(Index-Only Scan)する
個別解説ページ
しぜんきーとだいりきー概念設計・E-R図午後I記述午後II小論文★★★

自然キー(ナチュラルキー)と代理キー(サロゲートキー)

Natural Key vs. Surrogate Key
1行解説(要点)
業務上の意味をもつ属性やその組み合わせで構成する主キー(自然キー)と、業務上の意味をもたないシステム採番の連番・UUID等で構成する人工的な単一主キー(サロゲートキー)。
3行解説(詳細ポイント)
1自然キー(複合主キー)を用いると、下位テーブルに上位のキー属性(店舗コード、配送年月日、資材コード等)が継承されるため、テーブルを結合せずに直接検索・集計できる可読性と性能メリットがある
2サロゲートキー(単一連番ID)を用いると、主キー列が1列で済むためJOIN条件が単純になるが、本来の業務上の一意性(候補キー)に対するUNIQUE制約を別途定義しないと重複登録を防げない
3IPAのデータベーススペシャリスト午後試験では、データの意味構造と業務ルールを明確に表現するため「自然キー(複合主キー)による関係スキーマ設計」が強く重視される
個別解説ページ
だーてぃりーどのんりぴーたぶるりーどふぁんとむりーど排他制御・ACID午前II午後I記述午後II小論文★★★

ダーティリード・ノンリピータブルリード・ファントムリードの厳密比較

Dirty Read, Non-Repeatable Read & Phantom Read
1行解説(要点)
複数トランザクションの同時実行時に発生する3種類の代表的な読取り異状(未コミット読取り、再読取り時の値変化、再検索時の対象行増減)。
3行解説(詳細ポイント)
1ダーティリード:他トランザクションがUPDATE/INSERTしてまだコミットしていないデータを読み取ってしまい、その後ロールバックされると存在しない値に基づいた処理になる現象
2ノンリピータブルリード(ファジーリード):同一トランザクション内で同じ行を2回SELECTした間に、他トランザクションがその行をUPDATEしてコミットしたため1回目と2回目で異なる値が返る現象
3ファントムリード:同一トランザクション内で同じ検索条件(WHERE句)を2回実行した間に、他トランザクションが条件に合致する行をINSERT(またはDELETE)してコミットしたため行集合が変化する現象
個別解説ページ
かーでぃなりてぃとおぷしょなりてぃ概念設計・E-R図午前II午後I記述午後II小論文★★★

カーディナリティ(多重度:1対1・1対多・多対多)とオプショナリティ

Cardinality & Optionality in E-R Diagrams
1行解説(要点)
エンティティ間のリレーションシップにおいて、1つのインスタンスに対して相手側のインスタンスが何件対応するか(1対1、1対多、多対多)を表す多重度規則。
3行解説(詳細ポイント)
1IPAのDB試験のE-R図表記法では、1対多のリレーションシップは「1」側から「多」側へ向かう矢印(→)で表し、1対1は矢印なしの直線(―)、多対多は両端矢印(↔)で表す
21対多(親→子)では、「多(矢印の先)」側の関係スキーマに「1(矢印の根元)」側の主キーを外部キーとして持たせる
3業務要件の変更(例:「1つの質問に1つのコメント」から「1つの質問に複数のコメントを投稿可能」への変更)に伴い、リレーションシップを1対1から1対多へ変更する設問が頻出
個別解説ページ
れぷりけーしょんとしゃーでぃんぐ分散DB・NoSQL・DWH午前II午後I記述午後II小論文★★

レプリケーション・シャーディング(水平分割)とCAP/スケールアウト設計

Replication & Sharding (Horizontal Scaling)
1行解説(要点)
同一データの複製を複数ノードに保持して参照負荷分散と可用性を高める「レプリケーション」と、データをキー単位で複数ノードに分散配置して書込み・容量をスケールアウトする「シャーディング」。
3行解説(詳細ポイント)
1同期レプリケーションは全レプリカへの反映完了を待ってコミットするためデータ喪失がないが応答時間が増加し、非同期レプリケーションはプライマリのみで即コミットするため高速だが直後の参照で古いデータが見えるラグが生じ得る
2シャーディング(水平分割)ではテナントIDや会員番号のハッシュ値・範囲でノードを分けることで、書込み負荷とストレージ容量を線形にスケールアウトできる
3複数シャードに跨がる結合(クロスシャードJOIN)や分散トランザクションは高コストになるため、シャードキー選定が設計の生命線となる
個別解説ページ
べきとうせいとかいふくさいじっこうかのうせっけい分散DB・NoSQL・DWH午後I記述午後II小論文★★★

べき等性(Idempotency)とAPI・バッチ再実行可能設計

Idempotency & Restartable Batch Design
1行解説(要点)
同じリクエスト(API呼出しやバッチジョブ)が通信タイムアウトや障害復旧によって複数回実行されても、1回実行したときと同じデータベース状態になるよう保証する設計性質。
3行解説(詳細ポイント)
1API連携ではリクエストごとに一意な「指示番号(リクエストID)」を付与し、履歴テーブルに同一指示番号の行が既に存在すれば更新を行わず正常終了させる
2大量データを更新するバッチ処理では、一定件数ごとにコミット(コミット間隔制御)してロック保持時間を短縮しつつ、「再開位置テーブル」や「次回処理日」を同一トランザクション内で更新する
3異常終了後の再実行(リスタート)時に、コミット済みの行が再度処理対象として選択されない(二重加算されない)SQL条件にすることが不可欠
個別解説ページ
むそんしつけつごうぶんかいとかんすうじゅうぞくせいほぞん関数従属・正規化午前II午後I記述★★

無損失結合分解と関数従属性保存(正規化分解の正当性条件)

Lossless-Join Decomposition & Dependency Preservation
1行解説(要点)
関係Rを複数の関係R1, R2に分解したとき、自然結合によって元の関係Rが過不足なく(スプリアスタプルを生じずに)復元できる性質(無損失結合)と、元の関数従属性が各分解関係内で検証できる性質。
3行解説(詳細ポイント)
1関係R(A, B, C)をR1(A, B)とR2(B, C)に分解したとき、共通属性BがR1またはR2の少なくとも一方の候補キー(決定項:B → A または B → C)であれば無損失結合分解となる
2無損失結合でない分解(損失分解)を行うと、自然結合した際に本来存在しなかった偽の行(スプリアスタプル)が発生してしまう
3第3正規形への合成アルゴリズムによる分解では、無損失結合性と関数従属性保存の両方を常に同時に達成できる
個別解説ページ
はいたろっくりゅうどとろっくしょうかく排他制御・ACID午前II午後I記述午後II小論文★★★

トランザクションの排他ロック粒度(行ロック・ページロック・表ロック)とロック昇格

Lock Granularity & Lock Escalation
1行解説(要点)
排他制御の対象範囲(行・ページ・テーブル)の大きさを表すロック粒度と、大量の行ロック獲得によるロックメモリ枯渇を防ぐために粗い粒度のロックへ切り替えるロックエスカレーション。
3行解説(詳細ポイント)
1ロック粒度を細かく(行ロック)すると同時実行性は高まるが、ロック管理用のメモリ消費量と制御オーバヘッドが増加する
2ロック粒度を粗く(表ロック)するとロック管理コストは極小になるが、同じ表の別行を操作する他トランザクションまで待たされ同時実行性が低下する
3意図ロック(IX/ISロック)により表ロックと行ロックの競合を高速判定し、行ロック数がしきい値を超えると表ロックへの「ロック昇格(エスカレーション)」またはロックメモリ枯渇が発生する
個別解説ページ
びゅーのこうしんかのうせいとまてりあらいずどびゅーSQL・関係代数午前II午後I記述★★

ビュー(VIEW)の更新可能性とマテリアライズドビュー(実体化ビュー)

Updatable Views & Materialized Views
1行解説(要点)
SELECT文の定義のみを保持する仮想表(ビュー)に対してINSERT/UPDATE/DELETEが可能となる条件と、問合せ結果自体を物理的に保持して高速化するマテリアライズドビュー。
3行解説(詳細ポイント)
1通常のビューは実データを持たず参照のたびに基底表へアクセスするが、GROUP BY・HAVING・DISTINCT・集合関数・集合演算(UNION等)を含むビューは原則として直接更新できない
2`WITH CHECK OPTION` を指定したビューでは、そのビューのWHERE句の条件を満たさないような行のINSERTやUPDATEをエラーとして拒否する
3マテリアライズドビュー(実体化ビュー)は集計・結合結果を物理格納し索引も作成できるため参照が高速になる一方、基底表更新との同期(リフレッシュ)設計が必要
個別解説ページ