プログラミングHUB
language5分で読めます

データベース設計入門|テーブル設計・正規化・ER図の基礎を解説

データベース設計の基礎を初心者向けに解説。テーブル設計、正規化、ER図の読み書き方法、設計のアンチパターンまで実例付きで紹介します。

関連記事:SQL入門ガイド

データベース設計は、アプリケーション開発の土台となる重要なスキルです。設計が悪いと、後から修正するのが非常に困難になります。

データベース設計とは

データベース設計とは、アプリケーションで扱うデータをどのようにテーブル(表)に格納するかを決める作業です。

良い設計の条件

  • データの重複がない:同じ情報を複数箇所に持たない
  • 整合性が保たれる:矛盾したデータが入らない構造
  • 拡張しやすい:新しい要件に対応しやすい
  • パフォーマンスが良い:必要なデータに素早くアクセスできる

テーブル設計の基本

主キー(Primary Key)

各レコードを一意に識別するカラムです。

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(255) UNIQUE NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

外部キー(Foreign Key)

テーブル間のリレーションを定義します。

CREATE TABLE orders (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT NOT NULL,
  total INT NOT NULL,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

リレーションの種類

関係実装方法
1対1ユーザーとプロフィール外部キー+UNIQUE制約
1対多ユーザーと注文子テーブルに外部キー
多対多記事とタグ中間テーブル

正規化の基本

正規化とは、データの重複を排除してテーブルを整理する手法です。

第1正規形:繰り返しグループの排除

NG例:

idname趣味1趣味2趣味3
1田中読書映画NULL

OK例: usersテーブルとhobbiesテーブルに分離

第2正規形:部分関数従属の排除

複合主キーの一部にのみ依存するカラムを別テーブルに分離します。

第3正規形:推移関数従属の排除

主キーに直接依存しないカラムを別テーブルに分離します。

実務では第3正規形まで意識すれば十分です。

ER図の基本

ER図(Entity Relationship Diagram)は、テーブル間の関係を視覚的に表現する図です。

Prisma ORM入門も参考にしてください。

ER図の構成要素

  • エンティティ(テーブル):四角形で表現
  • 属性(カラム):エンティティの中にリスト表示
  • リレーション(関係):線で接続

ER図作成ツール

  • dbdiagram.io:ブラウザで無料で使える
  • MySQL Workbench:MySQLの公式ツール
  • Draw.io:汎用的な作図ツール

設計のアンチパターン

1. とりあえず全部1テーブルに入れる

関連の薄いデータを1つのテーブルにまとめると、カラム数が膨大になり管理が困難になります。

2. IDを持たないテーブル

主キーのないテーブルは、レコードの特定や更新が困難になります。

3. JSONカラムの乱用

柔軟性はありますが、検索やインデックスが効きにくくなります。構造化できるデータは正規化しましょう。

4. 論理削除フラグの安易な使用

deleted_at カラムを安易に追加すると、全クエリにWHERE条件が必要になり複雑化します。

設計の進め方

  1. 要件を整理:どんなデータを扱うか洗い出す
  2. エンティティを抽出:テーブルになりそうな概念を列挙
  3. 関係を定義:エンティティ間のリレーションを決める
  4. 正規化:第3正規形まで正規化する
  5. ER図を作成:視覚的に確認・レビュー
  6. テーブル定義書を作成:カラム名・型・制約を文書化
PR楽天ブックス プログラミング書籍楽天ブックスでプログラミング入門書を探す公式サイトで詳細を見る※本コンテンツはアフィリエイト広告を含みます。表示内容は各社公式サイトをご確認ください。

まとめ

データベース設計は、アプリケーションの品質に直結する重要なスキルです。まずは正規化の概念を理解し、小さなアプリで実際にテーブル設計を行うことで感覚を掴んでいきましょう。


あわせて読みたい

あなたに合う次の選び方を見る

30秒で診断してみる
#データベース#DB設計#正規化#ER図#MySQL#SQL

関連記事