LoginSignup
0
0

More than 1 year has passed since last update.

オリジナルアプリ開発#3【DB設計】

Last updated at Posted at 2021-05-09

現在、転職先の企業へのアピールポイントになるポートフォリオ作成(オリジナルアプリ開発)をしています。
私は、タスク管理ツールの完成を目指しています。

今回は、DB設計についてです。

エンティティを洗い出す

エンティティ(実体)とは、ある共通項を持ったデータの集合体のこと。

「システムに必要なエンティティ(=データ)は何か?」を洗い出していきます。

機能

  • サインアップ・サインイン機能
  • リスト機能
  • カード機能

これらの機能に必要なテーブルを以下のように抽出します。

必要なテーブル

  • usersテーブル
  • listsテーブル
  • cardsテーブル

これで必要なテーブルは決まりました。
次はそれぞれのテーブルに必要なカラムを決めるために、テーブルごとに管理する情報を考えていきます。

テーブルごとに管理する情報

usersテーブル

  • ニックネーム
  • メールアドレス
  • パスワード

listsテーブル

  • リストタイトル
  • user情報(外部キー)

cardsテーブル

  • カードタイトル
  • カードの詳細
  • list情報(外部キー)

全ての情報の関係性を考えます。
全ての情報をの関係を洗い出したら、テーブル設計を行います。
テーブル設計には、ER図を描きます。

Railsプロジェクト新規作成してから行います。
下の記事を参考にしてみてください!

ER図

ER図とは、データベース設計における代表的な設計図のことです。
ER図のEはエンティティ(Entity)の略で、Rはリレーションシップ(Relationship)の略です。

ToDoList_ER.png

READMEに設計情報を記述

README(リードミー)とは、ソフトウェアの仕様、規格、インストール方法などを文書化したアプリケーションの説明書のようなファイルです。
特徴として、rails newを実行した際に自動生成され、マークダウンと呼ばれる記述方法で記載されています。

今回、READMEには以下の内容を記述します。

  • テーブル名
  • カラム名
  • カラムの型
  • カラムのオプション(null false制約など)
  • アソシエーション
README.md
# テーブル設計

## usersテーブル

| Column             | Type   | Options     |
| ------------------ | ------ | ----------- |
| nickname           | string | null: false |
| email              | string | null: false |
| encrypted_password | string | null: false |

### Association

- has_many :lists

## listsテーブル

| Column     | Type       | Options                        |
| ---------- | ---------- | ------------------------------ |
| list_title | string     | null: false                    |
| user       | references | null: false, foreign_key: true |

### Association

- has_many :cards
- belongs_to :user

## cardsテーブル

| Column     | Type       | Options                        |
| ---------- | ---------- | ------------------------------ |
| card_title | string     | null: false                    |
| memo       | text       | null: false                    |
| prototype  | references | null: false, foreign_key: true |

### Association

- belongs_to :list

マークダウンを用いて記述すると、上記は以下の画像のように見た目が整った形で反映されます。
マークダウンが反映されているかどうかはGitHub等で確認します。

テーブル設計

usersテーブル

Column Type Options
nickname string null: false
email string null: false
encrypted_password string null: false

Association

  • has_many :lists

listsテーブル

Column Type Options
list_title string null: false
user references null: false, foreign_key: true

Association

  • has_many :cards
  • belongs_to :user

cardsテーブル

Column Type Options
card_title string null: false
memo text null: false
prototype references null: false, foreign_key: true

Association

  • belongs_to :list

テーブル設計については以上です。
ER図の描き方やREADMEの記述方法については今回触れませんでしたが、今後、ご紹介できればと思っています!!

参考

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