データベース設計入門 — Jr エンジニアが業務で設計まで行えるレベルへ
本書について
本書は継続的に改善しています。気になる点や改善提案があれば、お気軽にコメントをお寄せください。
この本で学ぶこと
本書は、プログラミングの基礎はあるが、データベースは初めて / 基礎のみの Jr エンジニアを対象に、業務アプリの DB 設計を「自分で要件から起こせるレベル」まで体系的に解説します。
本書を読み終えると、以下ができるようになります。
- リレーショナルデータベースの基本概念 (テーブル / カラム / 主キー / 外部キー / トランザクション / ACID) を自分の言葉で説明できる
- 業務要件から E-R 図を起こし、第 3 正規形まで正規化したテーブル設計 を作成できる
- 多対多 / 認証認可 / OAuth の典型パターンを自力で適用できる
- 設計時の意思決定 (代理キー vs 自然キー / 論理削除 vs 物理削除 / 正規化 vs 非正規化) でトレードオフを評価できる
- 設計レビューで指摘される観点 (パフォーマンス / セキュリティ / 拡張性) を事前にチェックできる
対象読者
想定する読者
- Jr エンジニア (プログラミング経験 6 ヶ月〜数年 / DB は初めて or 基礎のみ)
- API バックエンドや業務アプリの DB スキーマ設計を始める手前 の段階
- フロントエンド経験者でバックエンドに進む人 / ノーコードから手書きコードに移る人も含む
「実際に設計まで行える」の 「実際」の範囲:
- 個人プロジェクト (趣味アプリ / ポートフォリオ)
- 業務での新規プロジェクトの初期設計
範囲外 (本書では深入りしないトピック)
- 大規模分散システムの DB 設計 (シャーディング / マイクロサービス間 DB 分割)
- 既存システムへの schema migration (本格的なマイグレーション戦略)
- NoSQL の本格的設計 (使い分け判断は第 5 章でカバー、本格的設計は別ガイド)
- DB 運用 (バックアップ / レプリケーション / 監視の本格運用)
これらは中級〜上級向けで、本ガイドの土台ができてから別途学んでください。
本書の構成
本書は 19 章 + 用語集 + 設計テンプレート集 の 4 部構成です。
第 1 部: 基礎編 — データベースの世界
DB が何か / なぜ整理して保存するか / 基本操作と整合性を扱います。
| 章 | タイトル | 何を学ぶか |
|---|---|---|
| 01 | データベースの基本概念 | 整理されたデータの集まり / ID と一意性 |
| 02 | システムと DB の関係 | 3 層構造 / DBMS の役割 |
| 03 | 設計の重要性 | 後から直しにくい質的理由 |
| 04 | CRUD と ACID | SQL 基本操作 / トランザクション |
| 05 | リレーショナル DB 入門 | 関係を持つ複数の表 / NoSQL との使い分け |
| 06 | DBMS と SQL | 主要 RDBMS / SQL の 4 分類 |
| 07 | 基本用語と命名規則 | テーブル / カラム / 命名標準 |
| 08 | マスタ vs トランザクション | データの 2 性質と設計の違い |
第 2 部: 設計編 — 良いデータベースを作る
設計プロセスとキー / 正規化 / E-R 図の中核を扱います。
| 章 | タイトル | 何を学ぶか |
|---|---|---|
| 09 | 設計の流れ | 概念 → 論理 → 物理の 3 段階 |
| 10 | キー概念 | 主キー / 外部キー / 代理キー vs 自然キー |
| 11 | 正規化 | 第 1 〜 第 3 正規形 / 非正規化判断 |
| 12 | E-R 図 | 視覚化と mermaid 記法 |
| 13 | 設計の実践 | 要件 → E-R 図 → CREATE TABLE |
第 3 部: 応用編 — 実務でよく出会うパターン
多対多 / 認証認可 / OAuth の典型パターンを扱います。
| 章 | タイトル | 何を学ぶか |
|---|---|---|
| 14 | 多対多 | 中間テーブル / 自己参照 / RBAC |
| 15 | 認証認可 | パスワード / セッション / MFA / 監査 |
| 16 | OAuth / OIDC | Authorization Code + PKCE / JWT |
第 4 部: 実践編 — 総合演習と発展
総合題材で要件 → 設計 → 実装の一気通貫を実践し、発展章で性能設計の入り口に触れます。
| 章 | タイトル | 何を学ぶか |
|---|---|---|
| 17 | 実践事例 | 商品配送管理 / タスク管理の総合演習 |
| 18 | 正規化演習 | 第 11 章の演習問題集 |
| 19 | インデックス設計入門 | 検索を速くする張り方 / EXPLAIN 入門 |
リファレンス
| ファイル | 何が書いてあるか |
|---|---|
| 用語集 | 専門用語の即引き辞典 |
| 設計テンプレート集 | 命名 / 正規化 / レビュー観点のチェックリスト |
本書で使うデータベース・言語
本書のコード例は、特に断りがない限り PostgreSQL の方言で書いています。
- なぜ PostgreSQL: Stack Overflow Developer Survey 2025 で「最も使われている」DB 1 位 (専門開発者の 58.2% が使用)。新規プロジェクトで採用されることが多い
- 他の RDBMS (MySQL / SQL Server / Oracle) との方言差は、第 4 章末などに比較表を載せています
- アプリケーションコードの例は適宜 SQL + TypeScript / Python の擬似コード
読み進め方
通読する場合
- 基礎が浅い人: 第 1 章から順番に通読 (各章 15-30 分目安)
- 基礎は知っている人: 第 5 章 (RDB 入門) からスタートして OK
- 設計実践だけ知りたい人: 第 9-13 章 (設計編) を集中的に
都度参照する場合
- 「正規化って何だっけ」 → 第 11 章 + 用語集の正規化項目
- 「OAuth の実装が必要」 → 第 16 章
- 「テーブル名どう付けるか迷った」 → 設計テンプレート集の命名規則
演習の取り組み方
各章の末尾には設計演習 (要件 → 設計のアウトプット) を 1-2 問配置しています。
- まず自力で考える (10-15 分目安)
- 解答例を展開 (
<details>で折りたたみ) - 解答例の「ありがちな間違い」「別解」 で深く理解
設計演習は「読むだけで分かった気になる」のを防ぐ重要な仕掛けです。手を動かして取り組んでください。
関連ガイド
本ガイドで DB 設計の土台ができたら、次は実装フェーズに進みます。
- Laravel × DDD × クリーンアーキテクチャ — 実装フェーズで DDD を採用する場合の「ドメインモデル優先」のアプローチ。本 DB ガイドの「要件 → テーブル」とは方法論が違うので、両者の位置づけを意識して使い分けてください
- PayloadCMS 入門 — Next.js native の Headless CMS。DB スキーマを自動生成しつつ柔軟性も保つ
学習成果の確認
本ガイドを通読・演習を終えたら、次が自然にできるはずです。
- 任意のメモアプリ / ToDo アプリの DB スキーマを自分で設計できる
- レビュー会で「このテーブル設計の問題点は?」と聞かれたときに、観点を 3-5 つ挙げられる
- 既存システムの ER 図を読んで、ビジネス上の関係を読み取れる
- 設計時に「これはマスタかトランザクションか?」「主キーは代理キーか自然キーか?」を判断できる
- OAuth / RBAC のような「典型パターン」を要件から実装まで落とし込める
迷ったら、本ガイドのどの章に立ち返るべきか — その地図が用語集と設計テンプレート集です。Jr の DB 設計者人生のスタート地点として、ぜひ本ガイドを役立ててください。
参考文献
- ミック『達人に学ぶDB設計徹底指南書 〜初級者で終わりたくないあなたへ』翔泳社、2012 年 (ISBN: 978-4-7981-2470-4)
- 本ガイドの背景となる主要参考書。論理設計・正規化・インデックス設計・バックアップ / リカバリ・パフォーマンスチューニングなど、DB 設計の基礎と落とし穴を体系的に扱う定番。本ガイドの第 1 部 (基礎) と第 2 部 (設計) の組み立てには本書の考え方が下地として影響しています。
- 2024 年 8 月に 第 2 版 (ISBN: 978-4-7981-8662-7) が刊行されているため、より新しい内容で読みたい場合は第 2 版を参照してください。
最初の一歩
第 1 章 データベースの基本概念 から始めましょう。