DB設計について

本日、あるサイトを見てそこからテーブル設計を予測してみようという試みをしたのですが、どのようにテーブルを分けるか・アソシエーションはどうなるか予測を立てることに苦戦しました。。。

 

そこで今回、データベース設計についてまとめてみようと思います。

 

 

データベース設計とは?

データベース設計とは、現実の世界を抽象化してデータに落とし込む事です。

 

 

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

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

・エンティティ

・エンティティの属性

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

 

エンティティ

エンティティとは、共通のデータのまとまりのことです。実体とも呼ばれます。

「ユーザー」や「投稿内容」などの情報のまとまりのことです。

 

 

エンティティの属性

エンティティの属性とは、エンティティが個別にもつ情報のことです。

投稿内容というエンティティでは、「タイトル」「本文」などが属性です。

 

 

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

リレーションとは、エンティティ同士の関係性のことです。

 

 

データベース設計の手順

1:エンティティを決める

まず、作成するサービスでどんなエンティティが必要なのか洗い出します。

 

 

2:エンティティの属性を決める

各エンティティがどのようなデータを保持するか定義します。

データベースにおいてエンティティはテーブルという単位で表されるので、テーブルの定義を行います。

主キーを何にするか&どんな属性を持たせるかを決めます。

ここで正規化も行います。

 

 

3:エンティティ同士のリレーションを定義

エンティティ同士の関連性を決めます。例えば、ユーザーと投稿内容には、「ユーザー1人に対して投稿がN個」といったような関係が成り立ちます。

ここでER図をかきます。

 

 

4:データを実際のテーブルとして定義

各エンティティの属性に対して型や制約、インデックスを付けるか等を決めます。

 

 

 

正規化とER図についての記事は後日まとめます!