Domain
データベース設計・運用
SQL基礎・リレーショナルモデル理論・正規化・物理設計・トランザクション・ NoSQL/分散DB・運用とスキーマ進化までを段階的に学び、論理空間(集合論・ 述語論理)と物理空間(ディスクI/O・並行性)を往復しながら、堅牢で スケーラブルなデータ基盤を設計・運用できる能力を獲得する学習パス。
この分野の地形
データベースの地形は、麓の「SQL の平野」から始まり、理論の高原を越え、 物理の地下と分散の山脈へと登る大陸として描ける。最初の平野では、 手続き的な思考を脱ぎ「集合で考える」へと足場を移す。誰もが最初に 踏む入り口であり、すべての登り道の出発点となる。
平野を見下ろす位置には「理論と設計」の高原が広がる。関係モデルという 基盤岩の上に、正規化・論理設計・業務モデリングの大陸が乗る。 理論を腹落ちさせて初めて設計判断に背骨が通り、正攻法とアンチパターン (失敗例)を表裏で学ぶことで、現実の業務を写し取る力が育つ。
高原の地下には、インデックスとストレージエンジンの坑道が伸び、その先に 分散データシステムの山脈がそびえる。B-Tree から LSM-Tree、単一ノードの 内部構造を理解して初めて、分散の整合性という最高峰に地に足がつく。 この分野を俯瞰する鍵は、論理空間と物理空間を絶えず往復する点にある。
矢印の向きに読み進めます/実線=必須・破線=推奨
この地図を共有
グループ化
難易度
難易度
依存関係
グラフを計算中...
収録書籍
18件
SQL 第2版
ゼロからはじめるデータベース操作
ミック
達人に学ぶDB設計徹底指南書 第2版
ミック
PostgreSQL徹底入門 第4版
インストールから機能・仕組み、アプリ作り、管理・運用まで
近藤雄太, 正野裕大, 坂井潔, 鳥越淳, 笠原辰仁, 石井達夫
失敗から学ぶRDBの正しい歩き方
曽根壮大
リレーショナルデータベース入門 第3版
データモデル・SQL・管理システム・NoSQL
増永良文
SQLアンチパターン 第2版
データベースプログラミングで陥りがちな失敗とその対策
Bill Karwin
達人に学ぶSQL徹底指南書 第2版
初級者で終わりたくないあなたへ
ミック
SQL実践入門
高速でわかりやすいクエリの書き方
ミック
理論から学ぶデータベース実践入門
リレーショナルモデルによる効率的なSQL
奥野幹也
事業分析・データ設計のためのモデル作成技術入門
佐藤正美
システム開発・刷新のためのデータモデル大全
渡辺幸三
データ指向プログラミング
ソフトウェアがもつ複雑さの軽減に向けて
Yehonathan Sharvit
詳説 データベース
ストレージエンジンと分散データシステムの仕組み
Alex Petrov
データベースリライアビリティエンジニアリング
回復力のあるデータベースシステムの設計と運用
Laine Campbell, Charity Majors
データ指向アプリケーションデザイン
信頼性、拡張性、保守性の高い分散システム設計の原理
Martin Kleppmann
データベース・リファクタリング
データベースの体質改善テクニック
Scott W. Ambler, Pramod J. Sadalage
プログラマのためのSQL 第4版
すべてを知り尽くしたいあなたに
Joe Celko
SQLパフォーマンス詳解
開発者のためのSQLパフォーマンスのすべて
Markus Winand
依存関係
理由: 基本的な SELECT 文法を習得したら、CASE 式・ウィンドウ関数・集合演算といった「手続き型ではなく集合で考える」応用テクニックへ進むのが自然。両書とも同じ著者(ミック)による段階構成で、入門で身につけた語彙のまま応用へ橋渡しできる。
理由: 正しく動く SQL が書けるようになったら、次は「なぜ遅いのか」を実行計画(EXPLAIN)から読み解く視点が要る。実践入門は実行計画を起点にチューニングを説くため、基礎文法の直後に読むと「書ける」から「速く書ける」へ自然に伸びる。
理由: 応用集合操作を一通り押さえたら、Joe Celko の集合論ベースの上級表現や入れ子集合モデルによる階層データ表現へ。再帰 CTE などの宣言的な階層問い合わせを含め、手続き的発想を完全に捨てて集合論的に SQL を組み立てる思考様式の総仕上げになる。
理由: 実行計画を意識したチューニングの素地があると、Celko の上級表現が「なぜその書き方が効率的か」まで含めて腹落ちする。再帰 CTE のような宣言的な複雑問い合わせを、表現力と性能の両面から捉え直したい人向けの補助線。
理由: クエリチューニングとインデックス設計を学ぶと、性能問題の多くがスキーマや運用の初期判断に起因すると見えてくる。『失敗から学ぶRDBの正しい歩き方』は論理削除・キャッシュ・冪等性など運用全般のアンチパターンを扱い、SQL 単体の最適化から一段視野を上げてくれる。
理由: 応用 SQL を書きこなせても、運用フェーズで遭遇する RDB 固有の落とし穴は別の知識領域。『失敗から学ぶRDBの正しい歩き方』で運用視点を補うと、書く力と運用する力の両輪が揃う。
理由: SQL を「動かせる」段階の次は、なぜテーブルをこう分けるのか・なぜ正規化するのかを関係モデルの理論から腹落ちさせたい。奥野の『理論から学ぶデータベース実践入門』は Codd の関係モデルを実務の言葉で再構成しており、文法知識に理論の背骨を通せる。
理由: より体系的・学術的に関係モデルを押さえたい場合の分岐。増永『リレーショナルデータベース入門』は関係代数・正規形・同時実行制御を教科書的に網羅し、Codd の原典に連なる学術系譜を辿れる。実務寄りの奥野本とは補完関係にある。
理由: 関係モデルの理論を先に押さえると、達人指南書の集合演算・ウィンドウ関数が「なぜ集合で考えるべきか」の論理的必然として理解できる。理論→実装の順で読むと、応用 SQL の各テクニックが場当たりの暗記でなく原理から導けるようになる。
理由: 学術的な関係代数・正規化理論を学んだ後、それが実際の SQL でどう表現されるかを達人指南書で確かめる経路。理論で得た抽象を具体的なクエリ表現へ落とし込み、知識を実務で使える形に変換する。
理由: 関係モデルと正規化の理論を腹落ちさせたら、それを現実のテーブル設計へ落とし込む段階。『達人に学ぶDB設計徹底指南書』は正規化・主キー・外部キーといった理論を、論理設計・物理設計の実務手順として具体化しており、理論と実践の橋渡しになる。required(必須前提)に置く所以。
理由: 正攻法の設計手順を学んだら、次は「やってはいけない設計」を反面教師から学ぶ。Bill Karwin『SQLアンチパターン』は外部キー欠如(Keyless Entry)・EAV・カンマ区切りリストなど典型的な失敗を体系化しており、制約による整合性確保の重要性を裏側から補強する。
理由: 基本的な DB 設計手順を身につけたら、現実の事業ドメインをどうデータ構造へ写し取るかという上位スキルへ。『事業分析・データ設計のためのモデル作成技術入門』は業務分析からエンティティを抽出する技法を扱い、技術的な正規化の先にある「何をモデル化すべきか」の判断力を養う。
理由: 汎用的な設計指針を押さえた後、業務システム特有のモデリングパターン集へ。『システム開発・刷新のためのデータモデル大全』は受発注・在庫・会計など定番業務のモデル化パターンを網羅し、ゼロから考えずに実証済みの型を再利用する引き出しを増やす。
理由: Karwin『SQLアンチパターン』が論理設計・SQL レベルの失敗を扱うのに対し、『失敗から学ぶRDBの正しい歩き方』は本番運用で顕在化する RDB の落とし穴を扱う。設計時のアンチパターンを学んだ流れで、運用時のアンチパターンへ視野を広げると、設計から運用までの失敗パターンが一望できる。
理由: 事業分析からエンティティを導く「考え方」を学んだら、その成果物としての具体的なモデル例を『データモデル大全』で多数参照できる。抽象的なモデリング技法と、業務別の具体的なテーブル構成例とを行き来することで、設計の引き出しが立体的になる並行参照の関係。
理由: 単一 RDB を前提とした業務モデリングを極めると、次は「データが分散・大規模化したとき設計はどう変わるか」という問いに突き当たる。Kleppmann『データ指向アプリケーションデザイン』はレプリケーション・パーティショニング・整合性モデルを横断的に扱い、業務モデリングの知識を分散環境へ拡張する起点になる。
理由: 応用 SQL を書けるようになると、なぜそのクエリが速い/遅いのかをインデックスの内部構造から理解したくなる。Markus Winand『SQLパフォーマンス詳解』は B-Tree の仕組みからインデックス設計を説き起こし、SQL の「書き方」と「速さ」を一本の線で結ぶ。
理由: 実践入門で実行計画の読み方を身につけた後、Winand『SQLパフォーマンス詳解』でインデックスそのものの内部構造へ深掘りする。実行計画が「なぜそのアクセスパスを選ぶか」がインデックス構造から腹落ちし、チューニングの解像度が一段上がる。
理由: 『SQLパフォーマンス詳解』で RDBMS 非依存のインデックス理論を押さえたら、それが具体的な製品でどう実装されているかを『PostgreSQL徹底入門』で確かめる。B-Tree・GiST・GIN・BRIN など PostgreSQL 固有のインデックス種別やトランザクション機構に触れ、抽象理論を具体実装へ着地させる。
理由: 正規化中心の論理設計を学んだ後、その設計が物理性能にどう跳ね返るかを理解する補助線。Winand『SQLパフォーマンス詳解』を読むと、テーブル設計やキー選択がインデックス効率を左右する仕組みが見え、論理設計の判断に物理的な根拠を与えられる。
理由: 単一 RDBMS(PostgreSQL)の運用・トランザクションを理解したら、複数ノードへスケールしたときに何が壊れるかという分散の世界へ。Kleppmann『データ指向アプリケーションデザイン』はレプリケーションや一貫性のトレードオフを扱い、単機運用の知識を分散設計へ橋渡しする。
理由: 『SQLパフォーマンス詳解』で B-Tree インデックスの内部を理解したら、Alex Petrov『詳説 データベース』で B-Tree の先にある LSM-Tree や各種ストレージエンジンの実装へ視野を広げる。読み書き特性の異なるデータ構造を比較でき、DB エンジン選定の眼が養われる。
理由: PostgreSQL という具体的な RDBMS の実装を一つ理解すると、それを相対化する地図が欲しくなる。Petrov『詳説 データベース』はストレージエンジンや分散実装を製品横断で体系化しており、「PostgreSQL のこの仕組みは一般論ではどう位置づくか」を掴める。
理由: 単一ノードのストレージエンジン内部を理解して初めて、複数ノードに分散したときの整合性・レプリケーション・パーティショニングの議論が地に足のついたものになる。Kleppmann『データ指向アプリケーションデザイン』は分散データシステムの原理を体系化する到達点であり、内部構造の知識を必須前提(required)として据える。
理由: RDB のテーブル設計を学ぶと、アプリ側でデータをどう表現するかという設計思想にも関心が及ぶ。Yehonathan Sharvit『データ指向プログラミング』はデータを不変な汎用構造として扱う設計を説き、DB の正規化思想とアプリのデータモデリングを地続きで捉え直す視点を与える。
理由: データを不変として扱う設計思想は、分散システムでデータの一貫性やイベント履歴を扱う議論と深くつながる。Kleppmann『データ指向アプリケーションデザイン』はログ中心アーキテクチャやイベントソーシングを扱い、不変データの発想を分散基盤の文脈へ拡張する。
理由: PostgreSQL の運用基礎(バックアップ・監視・トランザクション)を一通り押さえたら、それを組織的・体系的な運用規律へ引き上げる段階。Campbell と Majors による『データベースリライアビリティエンジニアリング』は、Google が体系化した SRE 原則を DB 運用へ適用しており、属人的な運用から SLO ベースの信頼性設計へ移行できる。
理由: ストレージエンジンやレプリケーションの内部構造を理解していると、本番運用で何を監視し何が壊れうるかを構造から予測できる。『データベースリライアビリティエンジニアリング』は内部知識を運用設計(容量計画・障害対応・データ整合性)へ翻訳する架け橋になる。
理由: DB 設計は一度作って終わりではなく、アプリの変化に合わせて継続的に進化させるもの。Ambler & Sadalage『データベース・リファクタリング』はスキーマを安全に変更する技法を体系化しており、初期設計の知識を「運用しながら直し続ける」進化的設計へ接続する。
理由: Karwin『SQLアンチパターン』で「すでに作り込んでしまった悪い設計」を見抜けるようになったら、次はそれを安全に直す手段が要る。『データベースリファクタリング』は本番データを保持したままスキーマを段階的に改善するパターンカタログを提供し、アンチパターンの発見から修正までを一気通貫にする。
理由: 『データベースリライアビリティエンジニアリング』で「壊さない運用」の原則を学んだら、実際にスキーマを変更する局面でその原則をどう守るかが問われる。『データベースリファクタリング』のゼロダウンタイム移行技法は、SRE 的な信頼性目標を具体的なスキーマ変更手順へ落とし込む並行参照になる。
理由: Kleppmann『データ指向アプリケーションデザイン』で分散システムの理論的トレードオフを理解したら、それを実際に動かし続ける運用の現実へ。Campbell と Majors の『データベースリライアビリティエンジニアリング』は Google の SRE 原則をもとに、分散データ基盤を本番で信頼性高く運用する具体策を与える。
理由: 関係モデルと正規化理論を理解していると、Karwin『SQLアンチパターン』の各失敗例が「どの理論的原則を破っているか」という観点で読める。理論を知っているからこそアンチパターンが「なぜダメか」を原理から判断でき、暗記でなく応用の効く知識になる。
理由: Celko の集合論的な上級 SQL 表現を突き詰めると、その宣言的クエリが内部でどう実行・格納されるかという物理層への興味が湧く。Petrov『詳説 データベース』でストレージエンジンやインデックス実装を学ぶと、SQL の宣言と物理実行のギャップを埋められる。
理由: 増永『リレーショナルデータベース入門』で関係代数・正規形を学術的に押さえたら、奥野『理論から学ぶデータベース実践入門』でその理論が実務の SQL・設計判断にどう効くかを確かめる。アカデミックな厳密さと現場の実用性をつなぎ、理論が「使える知識」へ変わる。