3
0

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 3 years have passed since last update.

ER図作成(どうやってエンティティを絞り出すか?)

Posted at

#概要
アプリケーションに必要なER図を起こしました。
現状は、非常にシンプルな構造となっています。
今回制作するアプリケーションはマッチングアプリなので、「フォロー/アンフォロー」や「いいね機能」が追加予定です。その都度最新のER図を掲載していきます。
スクリーンショット 2021-02-02 21.53.40.png

#どんなアプリケーションか?
簡単にいうと生産者と料理人のマッチングサービスです。
以下の記事に制作に至った経緯が書いてあるので気になったかはご覧ください!
https://pontyblog.com/364/

#エンティティの絞り方
エンティティを絞り込む場合は、データが登録される場面に着目して絞っていきます。

第三正規化をおこない、情報するエンティティを分離する必要があります。正規化や第一、第二正規化では、「重複するデータ」が存在したり、本来分離されるべきエンティティが混同してしまうからです。

例えばSNSのように、1つの投稿に対して多数のコメントがされる場合を正規化で考えてみます。

####postsテーブル【正規化】

user_name tweet_text comment_text
masuda 虫が少ないキャンプ場 行ってみたい!/どこのキャンプ場?/景色も良さそう!
tanita 今日は犬と戯れています〜 ハスキー飼いたい!

一見問題なさそうですが、commentのところを見ると、コメントが複数存在しています。これは、アプリケーションのパフォーマンスを落とす原因になります。そして特定の情報を取得する際、情報整理できていないので、効率の悪いものになってしまいます。

#第三正規化をおこなう
第三正規化は、情報の混在するエンティティを分離することです。実際にやってみます。

####usersテーブル

id name
1 masuda
2 tanita

####tweetsテーブル

id tweet_text user_id
1 虫が少ないキャンプ場 1
2 今日は犬と戯れています〜 2

####commentsテーブル

id comment_text tweet_id
1 行ってみたい! 1
1 どこのキャンプ場? 1
1 景色も良さそう! 1
2 ハスキー飼いたい! 2

このように第三正規化をおこなうことで、データの重複を回避することができます。同時にエンティティも分離されているのでデータ管理も容易になります。

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?