ソロプレナーも知っておきたいデータベース設計の基本

ソロプレナーとして効率的にサービスを運用するには、DB 設計が重要です。どんな情報をどう整理し、システムでデータをスムーズに扱えるようにするか? これを考えるのが DB 設計です。本記事では、個人開発に適した DB 設計の基本を分かりやすく解説します。
DB 設計とは?
DB 設計とは、「どんな情報をどう整理し、どのように保存・管理するかを決める作業」。少しややこしく言うと、データモデルを作成しシステムでデータを効率よく扱えるようにすること。
📌 基本の考え方
簡単に説明すると、こんな感じ。
- DB 設計の基本は、表(+ ER 図)を作ること
- Excel のような表 でデータを整理
- ER 図(エンティティ・リレーションシップ図) でテーブルの関係を可視化
スケッチや簡易設計図を手書きで作成してからデジタル化するのも有効
📌 ER 図の作成手順
ER 図(エンティティ・リレーションシップ図)とは、データベース内のテーブル(エンティティ)同士の関係を視覚的に表現した図のこと。
これを作成することで、システム全体のデータ構造を把握しやすくなり、スムーズに設計を進められる。特に、複雑なデータ構造を扱う場合に有効。
- エンティティの洗い出し(管理したいモノ・概念を特定)
- 属性を定義(エンティティごとの情報を決める)
- リレーションを設定(エンティティ間の関係を決める)
- 主キー・外部キーの設計(一意性を保つための識別子を設定)
- 正規化の適用(データの冗長性をなくし、整合性を確保)
たとえば、「ユーザー管理 & サブスクリプション課金」 のシンプルな DB 設計を ER 図で作る場合。
こうなる。
PK(Primary Key) とは、テーブル内のデータを一意に識別するためのカラム(列) のこと。日本語では「主キー」と呼ばれる。
PK の特徴
重複しない(一意) → 例えば、ユーザーの id は 他のユーザーと被らない ようにする。
NULL(空欄)にならない → 必ず値が入っている必要がある。
検索やデータ管理の基準になる → id を使って、データを特定できる。
SQL での実装例
📌 正規化(Normalization)の概念
正規化とは、データの重複をなくし、整った形にすること。第 1 正規形 → データを細かく分ける、第 2 正規形 → 部分的な依存をなくす、第 3 正規形 → キー以外の依存をなくす。これにより、データの整合性が保たれ、更新や検索がしやすくなる。
- 第一正規形(1NF): 各カラムの値は単一の値を持つ
- 第二正規形(2NF): 主キーに完全に依存しない属性を分割
- 第三正規形(3NF): 主キー以外の属性同士に依存関係がないよう整理
📌 MCP + Supabase を活用するなら、こんな感じ
- 今なら、MCP を使って BaaS(Supabase)と直接接続できる
- Supabase にログインせずに MCP から DB を管理できる
- SQL を MCP で直接実行し、テーブル作成・管理が可能
- クエリの最適化・監視・バックアップも MCP で完結
MCP とは、データベース管理ツールであり、API を通じて様々な機能を提供します。Supabase との連携ポイントは、SQL の直接実行やバックアップなどが含まれます。
Supabase の初期設定後は MCP だけで運用が可能
- DB のスケール管理
- 負荷監視
- バックアップ復元
- クエリ最適化
- リレーショナル DB と NoSQL の違い: RDB はしっかりしたスキーマと ACID 特性を持ち、NoSQL は柔軟なスキーマと高速なスケールを実現します。
👉 スケッチや簡易設計図を元に、MCP でスムーズに DB を構築できる!
「論理設計」と「物理設計」って何?
DB 設計には 「論理設計」 と 「物理設計」 という 2 つのステップがあるけど、難しく考える必要はない!
簡単に言うと、こんな感じ 👇
- 📝 論理設計 = 「どんなデータを管理するか?」を整理する(考え方の設計)
- ⚙️ 物理設計 = 「実際にどう保存するか?」を決める(データベースの実装)
めちゃくちゃシンプルに言うと、論理設計=表(設計図)、物理設計=実装(コード化) ってこと
データモデルとは?
DB 設計をする際の データモデル は、以下の 3 つの要素 で構成される。
エンティティ(Entity) 🏢
管理する「モノ」や「概念」(例:生徒、テスト、注文)
属性(Attribute) 🏷️
エンティティが持つ情報(例:生徒の名前、テストの点数)
リレーションシップ(Relationship) 🔗
エンティティ同士の関係(例:「生徒」が「テスト結果」を持つ)
- DB 設計は「表を作る」+「ER 図を書く」の 2 つが基本!
- 図を書くなら、PlantUML や FigJam も便利!
まとめ
- DB 設計は「情報を整理し、どのように保存・管理するかを決める作業」
- まず「何を管理するか?」を決める(論理設計)
- テーブル(表)を作り、関係(リレーション)を設計
- 「どう保存するか?」を考え、SQL で実装(物理設計)
- 正規化を行い、冗長性を減らしデータの整合性を確保
- 今なら、MCP + Supabase で効率よく DB を管理できる
- ER 図を作成し、データの流れを視覚的に整理するのが重要