SQLを一通り基礎をまとめたので
次はデータベース設計に手を付けます。
データベース設計
データベース設計は基本的には現実世界の要素をデータに落としこむ作業です。
要素とは例えばユーザーです。ユーザーをデータベースで管理するには
- 「ユーザーという概念(エンティティ)」
- 「個々のユーザーの持つ情報(属性)」
- 「ユーザーと他情報の関係性(リレーション)」
を決める必要があります。
データベースを構成する要素
- サービスで扱う概念(エンティティ)
- エンティティの属性
- エンティティ同士の関係性(リレーション)
エンティティ(テーブル)
エンティティとは、サービスの中で管理する必要のある概念(情報)を指します。
例えば、SNSなどのサービスでは「ユーザー」や「投稿内容」、「コメント」などの情報を管理する必要があります。
これらの情報がエンティティにあたります。
エンティティの属性(テーブルのカラム内容)
属性とは、エンティティが個別に持つ情報です。ユーザーというエンティティでは
「名前」「アドレス」「パスワード」「プロフィール写真」が属性にあたります。
リレーション(railsのアソシエーションに近い)
リレーションとは、エンティティとエンティティとの間に存在する関係性のことです。
例えば、料理には、その料理を作った人がいます。こういった場合料理と作った人の
2つのエンティティには関係性があります。
データベース設計の手順
大雑把に説明すると
1,データベースで管理するデータ(エンティティ)を決める
2,それぞれのデータの持つ属性を決める
3,エンティティ同士の関係性を決める(リレーション)
4,データを実際にデータベースのテーブルとして定義する
1,データベースで管理するデータ(エンティティ)を決める
必要なテーブルを考える形
通販ならユーザーと製品のテーブルがまず必要
2,それぞれのデータの持つ属性を決める
ユーザーなら・・・・名前、性別、年齢、資金など
製品なら・・・製品名、価格、在庫状況など
右側の項目内容を決めること。
3,エンティティ同士の関係性を決める(リレーション)
出品した、買った製品とはユーザーと繋がっていますので
その関係にリレーションを設定すします。
4,データを実際にデータベースのテーブルとして定義する
最後に1〜3の手順を元に実際にテーブルを作成することになります。
エンティティはテーブルに相当し、属性はテーブルが持つカラムに相当します。