まずはデータベース設計の基礎知識から学ぶ
データベースを構成する要素
データベースを構成する要素は以下の3つがある。
- サービスで扱う概念(エンティティ)
- エンティティの属性
- エンティティ同士の関係性(リレーション)
サービスで扱う概念(エンティティ)
サービスで扱うデータを定義する。データベース設計ではこのデータをエンティティ
と言う。
● エンティティ
サービスの中で管理する必要のある概念(情報)指す。
例にあげるとSNSなどのサービスでは「ユーザー」や「投稿内容」、「コメント」などの情報を管理する必要があるが、これらの情報がエンティティにあたる。
エンティティの属性
エンティティは属性を持つ。映画というエンティティであれば、タイトルや説明、公開日、監督などが属性である。
● エンティティの属性
エンティティが個別に持つ情報のこと。ユーザーというエンティティでは、「名前」 「アドレス」 「パスワード」 「プロフィール写真」が属性にあたる。
※ エンティティと属性の例
エンティティ | 属性 |
---|---|
投稿内容(ツイートなど | 投稿したテキスト、投稿した写真、 いいね数 etc |
エンティティ同士の関係性(リレーション)
エンティティとエンティティの間に関係性がある場合があり、これを__リレーション__をいう。Twitterではツイートをツイートを投稿したユーザーの間には関連性がある。
● リレーション
エンティティとエンティティとの間に存在する関係性のことであり、例にあげると、映画には、その映画を撮った監督がいる。こういった場合映画を監督の2つのエンティティには関係性がある。
(Twitterだとどのユーザーが投稿したツイートであるか分かるように設定する。)
データベース設計の手順
ほとんどの場合で必須となる手順は以下の4つ。
- データベースで管理するデータ(エンティティ)を決める
- それぞれのデータを持つ属性を決める
- エンティティ同士の関係性を決める(リレーション)
- データを実際にデータベースのテーブルとして定義
1. データベースで管理するデータ(エンティティ)を決める
まずは、作成するサービスで管理するデータを決める。この作業はエンティティを決定することと同義。
Twitterの例にしてみると、大きく分けて__ユーザーと投稿したツイートと2つのエンティティが必要__であることが分かる。
2. それぞれのデータの持つ属性を決める
エンティティが決定すれば次に属性を考える。
__ユーザーに持たせる属性は名前、アドレス、パスワード__などがあげられる。__ツイートに持たせる属性は、本文、いいね数、投稿時間__など。。。
3. エンティティ同士の関係性を決める(リレーション)
エンティティ同士の関連性を決定する。ツイートには必ず投稿したユーザーが存在し、そこで__ユーザーをツイートとの間にリレーションを設定する__ことで2つのエンティティ同士に関係性を持たせる。また、他のエンティティと関係のない独立したエンティティも存在する。
4. データを実際にデータベースのテーブルとして定義
最後に1〜3の手順を元に実際にテーブルを作成することになる。エンティティはテーブルに相当し、属性はテーブルが持つカラムに相当する。
まとめ
以上の手順がデータベース設計の基本であり、何かアプリを作成する前に考えないことには始まらない。
まずは分かる部分から紙でも良いので書いていき適宜修正も行う。