データベース設計入門 — Jr エンジニアが業務で設計まで行えるレベルへ
API バックエンドや業務アプリの DB スキーマ設計を始める Jr エンジニア向けの実践ガイド。第 1 部 基礎 → 第 2 部 設計 → 第 3 部 応用 → 第 4 部 実践 の 19 章 + 用語集 + 設計テンプレート集で、要件 → E-R 図 → テーブル定義 → SQL までを通読で身につけます。
API バックエンドや業務アプリの DB スキーマ設計を始める Jr エンジニア向けの実践ガイド。第 1 部 基礎 → 第 2 部 設計 → 第 3 部 応用 → 第 4 部 実践 の 19 章 + 用語集 + 設計テンプレート集で、要件 → E-R 図 → テーブル定義 → SQL までを通読で身につけます。
主キー・外部キー・候補キー・複合キー・代理キーと自然キーの違いを整理し、ハイブリッドアプローチ (代理キー = PK + 自然キー = unique 制約) の現代ベストプラクティスをジュニア向けに解説します。
データの重複と矛盾 (更新異常・挿入異常・削除異常) を排除する正規化の考え方を、関数従属性 / 第1〜第3正規形 / BCNF の補足 / 性能を理由とした選択的非正規化まで、ジュニア向けに段階的に解説します。
E-R 図 (Entity-Relationship Diagram) の基本記法 (エンティティ・属性・リレーションシップ・カーディナリティ) と、業務要件からエンティティを抽出して E-R 図を起こす手順、主要なツール (mermaid / draw.io / PlantUML) をジュニア向けに解説します。
帳票や業務要件を起点にエンティティを抽出し、E-R 図を起こし、正規化して CREATE TABLE まで一気通貫で進める手順を、レストラン注文と社内 SNS の 2 題でジュニア向けに示します。
多対多関係を中間テーブルで実装する手順、属性を持つ多対多 (商品サプライヤ)、自己参照多対多 (フォロー)、タグシステム、RBAC (ロールベース権限) を題材に、トリガー集計の現代的な代替案 (アプリ層 / マテリアライズドビュー / Redis) も含めて解説します。
認証 (Authentication) と認可 (Authorization) の違いから、パスワードハッシュ (bcrypt/argon2)、セッション管理、多要素認証 (MFA / TOTP)、アカウントロック (OWASP/NIST 準拠)、監査ログまでをジュニア向けに DB 設計の観点で解説します。
OAuth 2.0 の 4 役割と Authorization Code Flow + PKCE、OpenID Connect の ID Token (JWT)、Implicit Flow が RFC 9700 で非推奨化された現代の標準、ソーシャルログイン連携の DB 設計をジュニア向けに解説します。
「商品配送管理システム」と「タスク管理システム」の 2 つの総合題材で、要件 → E-R 図 → テーブル定義 → 想定クエリの一気通貫を実践します。本ガイドの集大成として、これまでの章で学んだ概念を統合して使います。
第 11 章で学んだ正規化の理解を深めるための演習問題集。未正規化テーブルから第 3 正規形まで段階的に分解する作業を、業務上ありがちなケース (子供情報・複数カテゴリ・導出項目・社員情報) で繰り返し練習します。
インデックスが検索を速くする仕組み (B-Tree の直感) から、どのカラムに張るか (WHERE / JOIN / ORDER BY)、複合インデックスのカラム順序、部分インデックス、EXPLAIN の読み方、張りすぎの害、UUID 主キーとの相性までを、設計時の判断に絞ってジュニア向けに解説します。
データベースを「整理されたデータの集まり」として捉え、ファイルや表計算ソフトでの管理と何が違うのか、一意性 (ID) や検索性などの基本機能をジュニア向けに解説します。
Web システムの 3 層構造 (ユーザー / アプリ / データ) の中でデータベースが占める位置と、アプリケーションとデータベースをつなぐ DBMS の役割をジュニア向けに解説します。
データベース設計が「建物の基礎」のような役割を果たし、後から直しづらい質的理由 (運用中のサービスを止められない / データ移行コスト / 影響範囲の広さ) と、データ設計スキルが現代でも価値を持ち続ける理由を解説します。
データベースの 4 つの基本操作 (CRUD) と、複数の操作をまとめて扱うトランザクション・ACID 特性 (原子性・一貫性・独立性・永続性) を、銀行振込などの具体例とともに解説します。
リレーショナルデータベース (RDB) の基本概念と、「単一の巨大な表」でなく「関係を持つ複数の表」で管理する利点・トレードオフ、NoSQL との使い分けをジュニア向けに解説します。
DBMS の役割 (SQL 解析・トランザクション管理・権限・最適化) と、SQL の 4 つの分類 (DDL/DML/DCL/TCL)、主要 RDBMS 製品 (PostgreSQL / MySQL / SQLite / Oracle / SQL Server) の特徴と使い分けをジュニア向けに解説します。
テーブル / カラム / レコード / 主キー / 外部キー / スキーマ / インデックス / ビューといった基本用語と、グローバル標準に通用する命名規則 (テーブルは複数形 / snake_case / Boolean は is_ で始める など) をジュニア向けに解説します。
データベースのデータを「マスターデータ (辞書のような基準情報)」と「トランザクションデータ (日々発生する履歴)」に分類して扱う考え方と、それぞれの設計・運用上の違いをジュニア向けに解説します。
システム開発全体の流れの中でデータベース設計がどこに位置し、概念設計・論理設計・物理設計の 3 段階でどう抽象から具体へ進めるかをジュニア向けに解説します。