用語定義の監査台帳(作業用)

全13回(00-index.md は索引のため対象外)を走査し、SQLキーワード・組み込み関数・記法・ PostgreSQL固有の概念語・psqlメタコマンド・EXPLAIN出力のノード名・拡張/ツール名について、 初出位置と定義の有無を記録した台帳である。修正作業の根拠として残す。

判定基準

「到達目標」「到達度チェックリスト」での言及は目標の提示であり、初出・定義の先出しとは見なさない。 初出位置は本編・ハンズオン・前提と準備の本文を対象とする。

欠陥分類

分類内容
A定義より前の回で説明なしに使われている(先出し)
Bその回の主役は定義されるが、補助的な関数・記法・キーワードが定義されない
C構文の形は示されるが「それが何であるか」の定義文がない
D下位概念(種類・段階・レベル)は個別に定義されるが、それらを束ねる上位概念が定義されない
E略語が初出時に展開されていない
—欠陥なし

監査観点

走査のたびに次を確認する。D・E は第2次監査で追加した観点である。

台帳

初出位置の行番号は第1次監査(2026-08-16)時点のものであり、その後の追記でずれている場合がある。

第1回 環境構築・エンコーディング/照合順序

用語初出(ファイル:行)定義の有無定義位置欠陥分類
メタコマンド(psql)01:84あり01:84—
\l / \dt / \d / \c / \timing / \q01:86-93あり01:86-93(表)—
エンコーディング01:111あり01:123—
照合順序(collation)01:111あり01:111, 125—
LC_COLLATE / LC_CTYPE01:111あり01:125—
C ロケール01:116あり01:125—
ICU01:131あり01:131—
template0 / template101:118あり01:173, 187—
GENERATED BY DEFAULT AS IDENTITY01:214なし(04:219 で「サロゲートキー」として間接的に)B
numeric(p,s)01:231あり05:70A(軽微・01:209 に後述予告あり)
timestamptz / timestamp01:209あり01:395(表)—
generate_series01:302あり01:302—
random()01:302あり01:302—
interval '365 days'01:302なし05:165B
::(キャスト記法)01:323なし(どこにもなし)B
||(文字列連結)01:308なし(どこにもなし)B
ARRAY[...](配列リテラル)01:309なし(どこにもなし)B
floor / round01:309, 323なし(どこにもなし)B(軽微)
ON CONFLICT ... DO NOTHING01:351なし11:245(べき等登録の文脈)B
LATERAL01:362なし(どこにもなし)B
UNION ALL01:446あり01:465—
GUC01:383なし(括弧書きのみ)(どこにもなし)B
B-tree01:386あり07:101A
REINDEX01:386なし(どこにもなし)B(軽微)
pg_dump / pg_restore01:383あり12:61A(軽微)
pg_collation01:131なし(どこにもなし)B(軽微)
COLLATE 句01:171あり01:171 文脈—

第2回 関係モデル

用語初出(ファイル:行)定義の有無定義位置欠陥分類
関係(relation)/ タプル / 属性 / 定義域02:59-64あり02:59-64(表)—
述語(predicate)02:109あり02:109—
プランナ02:103あり02:103—
論理的評価順序02:122あり02:126(表)—
集合演算(UNION/INTERSECT/EXCEPT)02:198あり02:233(表)—
三値論理 / unknown02:278あり02:280—
IS NULL / IS NOT NULL02:355あり02:355—
COUNT(*) / COUNT(列名)02:375あり02:377—
VALUES(テーブルとしての)02:317なし(どこにもなし)B
::text(キャスト)02:321なし(どこにもなし)B
DISTINCT02:244なし(どこにもなし)B(軽微)
WITH(CTE)02:591(課題2 想定解答)あり03:305A
集約関数02:260あり03:159A(軽微)

第3回 SQL を書ききる

用語初出(ファイル:行)定義の有無定義位置欠陥分類
INNER JOIN / LEFT JOIN / 自己結合03:62あり03:62(表)—
GROUP BY / 集約関数03:159あり03:159—
サブクエリ / 相関・非相関03:226あり03:226—
EXISTS03:278あり03:278—
CTE(WITH 句)03:305あり03:305—
MATERIALIZED03:341あり03:341—
ウィンドウ関数03:348なし(形のみ)(どこにもなし)C
PARTITION BY / フレーム句03:363-368あり03:363-368—
ROW_NUMBER / RANK / LAG / LEAD03:370, 443, 468あり同左—
date_trunc03:175なし(どこにもなし)B
coalesce03:630なし(どこにもなし)B
DISTINCT ON03:602なし(どこにもなし)B
array_agg03:660なし(どこにもなし)B(軽微)
\x auto03:45なし(第1回のメタコマンド表に無い)B
interval '7 days'03:139なし05:165B

第4回 論理設計と正規化

用語初出(ファイル:行)定義の有無定義位置欠陥分類
ER図 / 多重度(カーディナリティ)04:42あり04:42—
鳥の足記法04:44あり04:44—
関数従属 / 決定項 / 候補キー04:57あり04:57—
1NF / 2NF / 3NF / BCNF04:115, 123, 151, 178あり同左—
部分従属 / 推移従属04:121, 149あり同左—
スーパーキー04:151なし(どこにもなし)B
素属性04:151あり04:151(括弧内に定義)—
自然キー / サロゲートキー04:219あり04:219, 221(表)—
外部キー(FK)制約04:280あり04:280—
無損失分解04:398なし(括弧書きのみ)(どこにもなし)B(軽微)
更新異常 / 挿入異常 / 削除異常04:349, 363, 377あり同左—
CREATE TABLE ... AS04:126なし(どこにもなし)B(軽微)

第5回 データ型と制約設計

用語初出(ファイル:行)定義の有無定義位置欠陥分類
整数系 / 浮動小数点系 / numeric05:61あり05:61, 64(表)—
text / varchar(n) / char(n)05:114あり05:114—
date / interval05:165あり05:165—
boolean05:184あり05:184—
ENUM型05:188あり05:194 文脈・05:210(表)—
jsonb05:224あり05:224—
-> / ->> / @> / ?(jsonb演算子)05:224なし(列挙のみ)(@> のみ 06:149)B
GIN インデックス05:224あり07:233(表)A
NOT NULL / UNIQUE / CHECK / 主キー / 外部キー05:259-271あり同左—
参照アクション(ON DELETE/ON UPDATE)05:273あり05:273—
生成列05:293あり05:293—
ドメイン型05:316あり05:316—
DDL05:137なし10:462 に部分的(ddl は定義変更のみ)B
ORM05:328なし(どこにもなし)B
CREATE TEMP TABLE05:119なし(どこにもなし)B(軽微)
jsonb_to_recordset05:249なし(どこにもなし)B(軽微)

第6回 実務のモデリング

用語初出(ファイル:行)定義の有無定義位置欠陥分類
range型 / tstzrange06:58あり06:58—
&& / @>(範囲演算子)06:58あり06:58, 149—
排他制約(EXCLUDE USING gist)06:92あり06:95—
btree_gist06:26なし(必要理由のみ)(どこにもなし)B
半開区間 '[)'06:95あり06:95—
トリガ06:74なし(用途のみ)(どこにもなし)C
PL/pgSQL / $$ / OLD・NEW / RAISE EXCEPTION06:196-215なし(どこにもなし)B
IS DISTINCT FROM06:220なし(どこにもなし)B(軽微)
ビュー06:266なし(用途のみ)(どこにもなし)C
部分インデックス06:251あり07:212A
論理削除06:239あり06:239—
中間テーブル / 実体化06:277, 289あり同左—
非正規化06:295あり06:295—
RETURNING06:363なし(どこにもなし)B(軽微)
レース条件06:117なし09:133 に相当内容B(軽微)

第7回 ストレージとインデックス

用語初出(ファイル:行)定義の有無定義位置欠陥分類
ヒープ / ページ / タプル07:51あり07:51—
行ポインタ(ItemId)07:53あり07:53—
TID / ctid07:77あり07:77—
B-tree(根・内部・葉)07:101あり07:101-105—
複合索引07:127あり07:127—
カバリング索引 / INCLUDE07:189あり07:189, 210—
Index Only Scan07:189あり07:189—
可視性マップ07:210あり07:210(括弧内に定義)—
部分索引07:212あり07:212—
Hash / GIN / GiST / BRIN07:233あり07:233(表)—
pg_trgm07:237なし(どこにもなし)B
オペレータクラス / opclass07:235(略称が先)なし(どこにもなし。07:289, 299 で用語だけ使用)B
text_pattern_ops07:289あり07:299—
式インデックス07:313あり07:313—
IMMUTABLE07:325なし(どこにもなし)B
Seq Scan / Index Scan / Bitmap Heap Scan / Index Cond / Filter / Buffers / Heap Fetches07:21, 143, 146, 206, 281あり08:97, 102(表)ほかA
VACUUM / 自動バキューム07:97, 210あり12:238, 241A
ANALYZE(統計収集)07:31あり08:146A(軽微)
SHOW block_size07:44なし(どこにもなし)B(軽微)

第8回 実行計画を読む

用語初出(ファイル:行)定義の有無定義位置欠陥分類
プランナ / 実行計画08:12あり08:12(02:103 でも)—
EXPLAIN の3オプション08:34あり08:34(表)—
cost / rows / width / actual time / loops08:83-87あり同左—
Seq / Index / Index Only / Bitmap スキャン08:97あり08:97(表)—
Nested Loop / Hash Join / Merge Join08:121あり08:121(表)—
統計情報 / pg_stats08:146あり08:146—
n_distinct / most_common_vals / histogram_bounds08:148-150あり同左—
共有バッファ08:89なし(どこにもなし)B
選択率08:95なし(括弧書きのみ)(どこにもなし)B
work_mem08:124なし(括弧書きのみ)(どこにもなし)B
random_page_cost08:138あり08:138—
拡張統計08:183なし(どこにもなし)B
VACUUM ANALYZE / 自動バキューム08:29, 180あり12:238, 241A
track_io_timing08:51なし(どこにもなし)B(軽微)
HashAggregate / Aggregate / Group Key08:70, 256なし(どこにもなし)B(軽微)

第9回 トランザクションと並行制御

用語初出(ファイル:行)定義の有無定義位置欠陥分類
トランザクション09:58あり09:58—
ACID09:58あり09:60(表)—
アノマリー(5種)09:71あり09:73-77—
分離レベル09:67あり09:67, 79—
スナップショット分離09:95あり09:95—
SSI09:97あり09:97—
MVCC / xmin / xmax09:101あり09:101-104—
スナップショット09:106あり09:106—
デッドタプル / ブロート09:131あり09:131—
read-modify-write09:135あり09:135—
行ロック / 排他ロック09:177あり09:177—
デッドロック09:237あり09:237—
SQLSTATE09:97なし(括弧書きのみ)(どこにもなし)B
VACUUM09:124あり12:238A
xmin ホライズン09:377なし(どこにもなし)B(軽微)
pg_stat_activity09:395あり12:353A(軽微)

第10回 権限・ロール・RLS・監査

用語初出(ファイル:行)定義の有無定義位置欠陥分類
ロール / LOGIN 属性10:62あり10:62—
ロール属性一覧10:73あり10:73(表)—
権限(privilege)10:89あり10:89—
グループロール / ログインロール10:93あり10:67, 93—
ALTER DEFAULT PRIVILEGES10:109あり10:118—
認証 / 認可(3層モデル)10:205あり10:219(表)—
RLS / ポリシー10:231あり10:231, 235—
USING / WITH CHECK10:312あり10:312-315—
BYPASSRLS / FORCE ROW LEVEL SECURITY10:79, 425あり同左—
マルチテナント10:233あり10:233(括弧内に定義)—
fail-closed10:363あり10:363—
pg_hba.conf / 認証方式10:500あり10:500, 523—
pgaudit10:472あり10:472, 486—
DML10:453あり10:453(括弧内に定義)—
DDL10:462部分的10:462B(05 側で先出し)
セッション変数 / current_setting10:350あり10:361—
システムカタログ10:550あり10:550(括弧内)—

第11回 アプリとの境界+インジェクション

用語初出(ファイル:行)定義の有無定義位置欠陥分類
N+1 問題11:54あり11:54—
遅延ロード / eager ロード11:142, 152あり同左—
バックエンドプロセス11:161あり11:161—
コネクションプール11:166あり11:166—
pgbouncer のプーリングモード11:185あり11:187(表)—
べき等性11:235あり11:235—
SQL インジェクション11:250あり11:250—
プレースホルダ / parse・bind11:298あり11:298—
許可リスト(allowlist)11:353あり11:353—
多層防御11:374あり11:374—
= ANY($1)11:99なし(用途のみ)(どこにもなし)B
ORM11:13なし(どこにもなし。05 で先出し)B
advisory lock / LISTEN・NOTIFY11:196なし(列挙のみ)(どこにもなし)B(軽微)
VACUUM / デッドタプル11:222あり12:238 / 09:131A(軽微)

第12回 運用+pg_stat_statements

用語初出(ファイル:行)定義の有無定義位置欠陥分類
論理バックアップ / 物理バックアップ12:61あり12:61—
WAL12:98あり12:98—
PITR12:13あり12:13, 100—
recovery.signal / 復旧パラメータ12:116あり12:116—
復旧試験12:139あり12:135—
ACCESS EXCLUSIVE ロック12:144あり12:144—
CREATE INDEX CONCURRENTLY12:149あり12:147-156—
テーブル書き換え(rewrite)12:169あり12:169—
NOT VALID → VALIDATE12:187あり12:187—
lock_timeout / 待ち行列12:217あり12:217—
死タプル / bloat12:233, 235あり同左—
VACUUM / VACUUM FULL / autovacuum12:238, 241, 244あり同左—
pg_stat_statements12:288あり12:288—
pg_stat_activity / キャッシュヒット率12:353, 366あり同左—
pg_ctl12:299なし(どこにもなし)B(軽微)

第13回 スケールと外の世界

用語初出(ファイル:行)定義の有無定義位置欠陥分類
垂直スケール13:71あり13:71—
パーティショニング / 宣言的パーティショニング13:86あり13:86—
レンジ分割 / デフォルトパーティション13:89, 137あり同左—
partition pruning13:185あり13:185—
レプリケーション / プライマリ / スタンバイ13:245あり13:245—
ストリーミング(物理)/ 論理レプリケーション13:249あり13:249(表)—
ホットスタンバイ13:258あり13:258—
同期 / 非同期13:276あり13:276—
レプリケーション遅延 / read-your-writes13:309あり13:309—
シャーディング / シャードキー13:315あり13:315—
CAP 定理13:336あり13:336—
結果整合性13:345あり13:345—
OLTP / OLAP13:359, 362あり同左—
行指向 / 列指向13:367あり13:367(表)—
ETL / DWH13:383あり13:383—
NoSQL13:394あり13:394—
ベクトルDB / 埋め込み / ANN13:408, 410あり同左—
Append(ノード名)13:214なし(どこにもなし。08 の表にも無い)B
DO ブロック / format / %L13:123なし(どこにもなし)B
setval / pg_get_serial_sequence13:152なし(どこにもなし)B(軽微)
2相コミット13:324なし(括弧書きのみ)(どこにもなし)B(軽微)
HNSW / IVFFlat13:422, 431部分的13:431—

集計

区分語数
台帳に載せた用語(総数)172
定義あり(欠陥なし)118
欠陥A(先出し)13
欠陥B(脇役の未定義)38
欠陥C(形はあるが定義文なし)3

欠陥ありの合計は 54 語(A 13・B 38・C 3)である。うち「軽微」と付記したものを除いた 優先対応対象は 32 語。

優先度の高い欠陥

分類用語内容
AWITH(CTE)02:591 の課題2 想定解答で使用。定義は 03:305。1回分まるごと先出し
ASeq Scan ほか EXPLAIN ノード名07 で多用。定義は 08:97 の表
AVACUUM / autovacuum07:97 が初出。定義は 12:238
A部分インデックス06:251 が初出。定義は 07:212
AGIN インデックス05:224 が初出。定義は 07:233
AB-tree01:386 が初出。定義は 07:101
Cウィンドウ関数03:348 以降、形と評価タイミングのみで「何であるか」がない
Cトリガ06:74 以降、用途のみで定義文がない
Cビュー06:266 で CREATE VIEW を使うが定義文がない
Bオペレータクラス / opclass07:235 で略称が先に出る
BIMMUTABLE / pg_trgm07:325 / 07:237。いずれも未定義
BDDL / ORM05:137 / 05:328。以降の回で繰り返し使われる
Bスーパーキー04:151。3NF/BCNF の判定条件の中核語
B共有バッファ / 選択率 / work_mem / 拡張統計08 の脇役語
B:: / || / ARRAY[...] / interval / VALUES01・02 の記法・構文
Bdate_trunc / coalesce / DISTINCT ON03 の組み込み関数・句

回をまたいで繰り返し出る未定義の脇役語(glossary 判断の根拠)

次の語は複数の回にまたがって登場し、かつ初出時点で定義がない。10語を大きく超えるため glossary.md を作成する判断とした。

::(キャスト) / \|\| / ARRAY[...] / interval / VALUES / ON CONFLICT / GENERATED BY DEFAULT AS IDENTITY / GUC / DDL / ORM / VACUUM / autovacuum / 部分索引 / GIN / オペレータクラス / IMMUTABLE / pg_trgm / 共有バッファ / 選択率 / work_mem / SQLSTATE / スーパーキー / date_trunc / coalesce / トリガ / ビュー (26語)

第2次監査 — 上位概念(D)と略語(E)

第1次監査は「用語ごとに定義があるか」を見たため、用語が語として登場しない欠落を拾えなかった。 第4回で「NF って何か」という質問が出たのが発端である。本編では 1NF・2NF・3NF・BCNF が個別に厚く 定義されているのに、それらを束ねる上位概念「正規形」の定義も、NF = Normal Form の展開もどこにも なかった。用語集は「主題語だから各回で定義される」として外し、各回の用語表は「本編で定義するから 表に要らない」として外した結果、両方の網から落ちていた。本編が定義していたのは個別の下位概念で あって、上位概念ではない、という構造的な見落としである。

同型の欠落を全13回で洗い直した結果が次の2表である。

D: 上位概念が定義されていない

回上位概念定義済みの下位概念対応
第4回正規形(NF)1NF / 2NF / 3NF / BCNF用語表の先頭に追加。4.3節の1NFの説明直前に定義文と包含関係を追加
第7回索引(インデックス)B-tree / Hash / GIN / GiST / BRIN用語表の先頭に追加。「B-tree の構造」冒頭に定義文を追加
第9回分離レベルREAD COMMITTED / REPEATABLE READ / SERIALIZABLE括弧書きの言及のみだったため、4段の列挙に入る直前に定義文を追加
第10回監査log_statement の粒度 / pgaudit用語表に追加。「監査」節の冒頭に定義文を追加
第13回水平スケールレプリケーション / シャーディング「水平方向の手法」とだけ書かれていた。用語表に追加し、垂直スケールの直後に定義

上位概念が定義済みで欠落なしと判定した回は次のとおり。第1回(エンコーディング・照合順序)、 第2回(関係モデル・集合演算・三値論理)、第3回(JOIN・集約・サブクエリ・ウィンドウ関数)、 第5回(制約・数値型の2系統)、第6回(履歴・状態遷移・論理削除・非正規化)、 第8回(実行計画・スキャン方式・結合方式)、第11回(N+1・コネクションプール・インジェクション)、 第12回(バックアップの2系統・bloat)。いずれも下位概念の列挙に入る前に「〜には大きく2系統ある」 「〜する方法は主に4つある」型の文が置かれており、上位概念が名指しで説明されている。

E: 略語が展開されていない

原語併記は定義とは見なさないが(判定基準を参照)、略語の展開はそれとは別に必須とする。

略語回展開対応位置
NF4Normal Form4.3節・用語表・到達目標
FD4Functional Dependency4.2節(4.5・4.6で説明なしに使われていた)
RDBMS2Relational Database Management System「関係モデルとは何か」
CTE3Common Table Expression用語表(本編 3.5節には既にあり、到達目標が先行していた)
DDL / DML5・10Data Definition / Manipulation Language各回の用語表・用語集
ORM5Object-Relational Mapping用語表・用語集
GIN / GiST / BRIN7Generalized Inverted Index / Generalized Search Tree / Block Range Index「索引の種類の使い分け」
KNN7k-Nearest Neighbor同上(表内)
MVCC9Multiversion Concurrency Control用語表(本編には既にあり)
RC / RR9READ COMMITTED / REPEATABLE READ分離レベルの列挙時に略記を導入
WAL / PITR12Write-Ahead Log / Point-In-Time Recovery用語表(本編・ねらいには既にあり)
HA13High Availabilityレプリケーション方式の比較表
HNSW / IVFFlat13Hierarchical Navigable Small World / Inverted File with Flat compression「RDBMS を選ばない判断」

展開済みで対応不要と確認した略語は次のとおり。GUC・TID・SSI・ACID・CAP・OLTP / OLAP・ETL・DWH・ ANN・RAG・RLS・PK / UK / FK・ICU・SQLSTATE・BCNF(Boyce-Codd正規形として日本語名を併記)。 ICU のみ、原語の展開(01:148)より前に本文中の使用(01:128)があるが、同一節内のため軽微とした。

到達目標での略語先出しへの対応方針

全13回とも構成は「ねらい → 到達目標 → 前提と準備 → 用語表 → 本編」で、用語表は到達目標より後に ある。したがって到達目標に略語が出る回は、用語表を前に動かすか、到達目標側に正式名称を併記するか のどちらかになる。今回はすべて併記で対応し、用語表は動かさなかった。理由は2つある。第一に、 13回すべてで同じ並びが揃っており、1回だけ順序を変えると構成の一貫性が崩れる。第二に、併記は 到達目標のその行だけで完結するため、他の回にも同じ手を機械的に適用できる。

併記の対象は「展開しないと語の意味が推測できない略語」に限る。第4回の NF は 1NF・2NF という語の 一部として現れ、展開なしでは読めないため到達目標に併記した。一方 GIN・GiST・BRIN・MVCC のように 固有名として扱える略語は、到達目標では名前のまま置き、本編と用語表で展開する。