0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてのDB設計【基礎を学ぶ】

Posted at

初めてのDB設計

プログラミングを勉強し始めて約2週間、ついに(ポートフォリオ)アプリの個人開発に足を踏み入れました。開発のスタートであるDB設計について得た知識を簡単に記事にしていこうと思います。今回はDB設計の流れをまとめました。

DB設計手順

1. 要件定義から始める

これから作成するデータベースで、「どんなデータをどう管理していくか」を決めていきます。そのためには、データベースを使用するシーンの流れを詳細に分析し、要件を抽出していきます。

2. エンティティを抽出する

エンティティとはデータベース内の各カテゴリのことで、例えばECサイトアプリでは「商品」「顧客」「注文」などがエンティティに当たります。
要件定義での内容から、データを持ちそうなカテゴリ(エンティティ)を抽出していきます。

3. 属性(カラム)を決める

属性(カラム)とは「エンティティが持つ詳細な情報の項目」のことです。先のECサイトアプリを例に取ると、

  • 【商品】エンティティのカラム
    「商品名」「価格」「在庫数」…など

  • 【顧客】エンティティのカラム
    「氏名」「メールアドレス」「パスワード」…など

抽出した各エンティティに必要な情報(カラム)を与えていきます。

4. リレーションの設定

リレーションは各エンティティ間に存在する「関係性」のことです。テーブル同士がどんな関係性であるかを明確にしていきます。
リレーションの種類には以下のものがあります。

①1対1

一方のデータに対して、もう一方も「ちょうど1つだけ」存在します。(あまり使われないらしい…)
例えば、【ユーザー】と【プロフィール】の関係は1対1の関係となります。

②1対多

1つのエンティティが複数のデータを持ちます。
【ユーザー】と【注文】の関係においては、1つの【ユーザー】に対して複数の【注文】データが存在できるため、1対多の関係になります。

③多対多

お互いのエンティティが複数の関係を保つ場合に発生します。一般的に「中間テーブル」を用いて1対多の関係をつなげることで表現します。
例えば【注文】と【商品】の関係において、1つの【注文】に対して複数の【商品】が存在し、1つの【商品】は複数の【注文】に含まれるため、多対多と表現します。
※以下の【注文詳細】は中間テーブルです。

5. 正規化してデータを整理する

正規化とはデータの重複や不整合を防ぐために、データを分割して整理すること。
一般的には以下の手順で正規化していきます。

①第1正規化

テーブルの各カラムが単一の値を持つようにします。
スクリーンショット 2025-07-27 14.42.26.png

②第2正規化

複合キーの一部にしか依存していないカラムを、別テーブルに分けます。
スクリーンショット 2025-07-27 15.06.37.png
※上表での複合キーは【注文番号】と【商品番号】

③第3正規化

主キー以外のカラムに他のカラムが依存していた場合は、別テーブルに分けます。
スクリーンショット 2025-07-27 15.27.43.png
※上表での主キーは【注文番号】

6. ER図を作成する

ここまでに整理してきた「エンティティ」「カラム」「リレーション」をER図にしてまとめます。

7. SQLテーブルの定義

実際のデータベース構造をSQLテーブルとして定義します。
例えば【商品】テーブルを定義すると以下のようなSQL文を記述します。

CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    description TEXT,
    category TEXT,
    price INTEGER,
    image_url TEXT
);
  • 「PRIMARY KEY」は主キーを表します。
  • 「NOT NULL」は空欄禁止の制約です。

最後に

本記事では一般的なDB設計の流れに沿ってまとめました。かなり基礎の部類のため、実際に設計を進めていきながら+αを学んでいきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?