2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

データベース設計の基礎知識・手順をまとめてみた

Posted at

まずはデータベース設計の基礎知識から学ぶ

データベースを構成する要素

データベースを構成する要素は以下の3つがある。

  • サービスで扱う概念(エンティティ)
  • エンティティの属性
  • エンティティ同士の関係性(リレーション)

サービスで扱う概念(エンティティ)

サービスで扱うデータを定義する。データベース設計ではこのデータをエンティティと言う。

エンティティ
サービスの中で管理する必要のある概念(情報)指す。
例にあげるとSNSなどのサービスでは「ユーザー」や「投稿内容」、「コメント」などの情報を管理する必要があるが、これらの情報がエンティティにあたる。

エンティティの属性

エンティティは属性を持つ。映画というエンティティであれば、タイトルや説明、公開日、監督などが属性である。

エンティティの属性
エンティティが個別に持つ情報のこと。ユーザーというエンティティでは、「名前」 「アドレス」 「パスワード」 「プロフィール写真」が属性にあたる。

※ エンティティと属性の例

エンティティ 属性
投稿内容(ツイートなど 投稿したテキスト、投稿した写真、 いいね数 etc

エンティティ同士の関係性(リレーション)

エンティティとエンティティの間に関係性がある場合があり、これを__リレーション__をいう。Twitterではツイートをツイートを投稿したユーザーの間には関連性がある。

リレーション
エンティティとエンティティとの間に存在する関係性のことであり、例にあげると、映画には、その映画を撮った監督がいる。こういった場合映画を監督の2つのエンティティには関係性がある。
(Twitterだとどのユーザーが投稿したツイートであるか分かるように設定する。)

データベース設計の手順

ほとんどの場合で必須となる手順は以下の4つ。

  1. データベースで管理するデータ(エンティティ)を決める
  2. それぞれのデータを持つ属性を決める
  3. エンティティ同士の関係性を決める(リレーション)
  4. データを実際にデータベースのテーブルとして定義

1. データベースで管理するデータ(エンティティ)を決める

まずは、作成するサービスで管理するデータを決める。この作業はエンティティを決定することと同義。
Twitterの例にしてみると、大きく分けて__ユーザーと投稿したツイートと2つのエンティティが必要__であることが分かる。

2. それぞれのデータの持つ属性を決める

エンティティが決定すれば次に属性を考える。
__ユーザーに持たせる属性は名前、アドレス、パスワード__などがあげられる。__ツイートに持たせる属性は、本文、いいね数、投稿時間__など。。。

3. エンティティ同士の関係性を決める(リレーション)

エンティティ同士の関連性を決定する。ツイートには必ず投稿したユーザーが存在し、そこで__ユーザーをツイートとの間にリレーションを設定する__ことで2つのエンティティ同士に関係性を持たせる。また、他のエンティティと関係のない独立したエンティティも存在する。

4. データを実際にデータベースのテーブルとして定義

最後に1〜3の手順を元に実際にテーブルを作成することになる。エンティティはテーブルに相当し、属性はテーブルが持つカラムに相当する。

まとめ

以上の手順がデータベース設計の基本であり、何かアプリを作成する前に考えないことには始まらない。
まずは分かる部分から紙でも良いので書いていき適宜修正も行う。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?