DB設計について
本日、あるサイトを見てそこからテーブル設計を予測してみようという試みをしたのですが、どのようにテーブルを分けるか・アソシエーションはどうなるか予測を立てることに苦戦しました。。。
そこで今回、データベース設計についてまとめてみようと思います。
データベース設計とは?
データベース設計とは、現実の世界を抽象化してデータに落とし込む事です。
データベースを構成する要素
データベースを構成する要素には以下の3つがあります。
・エンティティ
・エンティティの属性
・エンティティ同士の関係性(リレーション)
エンティティ
エンティティとは、共通のデータのまとまりのことです。実体とも呼ばれます。
「ユーザー」や「投稿内容」などの情報のまとまりのことです。
エンティティの属性
エンティティの属性とは、エンティティが個別にもつ情報のことです。
投稿内容というエンティティでは、「タイトル」「本文」などが属性です。
エンティティ同士の関係性(リレーション)
リレーションとは、エンティティ同士の関係性のことです。
データベース設計の手順
1:エンティティを決める
まず、作成するサービスでどんなエンティティが必要なのか洗い出します。
2:エンティティの属性を決める
各エンティティがどのようなデータを保持するか定義します。
データベースにおいてエンティティはテーブルという単位で表されるので、テーブルの定義を行います。
主キーを何にするか&どんな属性を持たせるかを決めます。
ここで正規化も行います。
3:エンティティ同士のリレーションを定義
エンティティ同士の関連性を決めます。例えば、ユーザーと投稿内容には、「ユーザー1人に対して投稿がN個」といったような関係が成り立ちます。
ここでER図をかきます。
4:データを実際のテーブルとして定義
各エンティティの属性に対して型や制約、インデックスを付けるか等を決めます。
正規化とER図についての記事は後日まとめます!