メインコンテンツまでスキップ

データベース設計入門 — 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設計の重要性後から直しにくい質的理由
04CRUD と ACIDSQL 基本操作 / トランザクション
05リレーショナル DB 入門関係を持つ複数の表 / NoSQL との使い分け
06DBMS と SQL主要 RDBMS / SQL の 4 分類
07基本用語と命名規則テーブル / カラム / 命名標準
08マスタ vs トランザクションデータの 2 性質と設計の違い

第 2 部: 設計編 — 良いデータベースを作る

設計プロセスとキー / 正規化 / E-R 図の中核を扱います。

タイトル何を学ぶか
09設計の流れ概念 → 論理 → 物理の 3 段階
10キー概念主キー / 外部キー / 代理キー vs 自然キー
11正規化第 1 〜 第 3 正規形 / 非正規化判断
12E-R 図視覚化と mermaid 記法
13設計の実践要件 → E-R 図 → CREATE TABLE

第 3 部: 応用編 — 実務でよく出会うパターン

多対多 / 認証認可 / OAuth の典型パターンを扱います。

タイトル何を学ぶか
14多対多中間テーブル / 自己参照 / RBAC
15認証認可パスワード / セッション / MFA / 監査
16OAuth / OIDCAuthorization 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 章 (設計編) を集中的に

都度参照する場合

演習の取り組み方

各章の末尾には設計演習 (要件 → 設計のアウトプット) を 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 版を参照してください。
最初の一歩