✨
DB設計|テーブル定義書の作成
前提
こちらのER図をもとにテーブル定義書を作成しています。
members テーブル
会員情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | 会員ID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
family_name | 名前(姓) | string | ⚪︎ | ||||
first_name | 名前(名) | string | ⚪︎ | ||||
family_name_kana | フリガナ(姓) | string | ⚪︎ | ||||
first_name_kana | フリガナ(名) | string | ⚪︎ | ||||
post_code | 郵便番号 | string | ⚪︎ | ||||
address | 住所 | text | ⚪︎ | ||||
tel_number | 電話番号 | string | ⚪︎ | ||||
メールアドレス | string | ⚪︎ | |||||
encrypted_password | パスワード | string | ⚪︎ | ||||
is_deleted | 退会ステータス | boolean | ⚪︎ | false | |||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
encrypted_password
とは?
ハッシュ化(暗号化)されたパスワードのこと。deviseを使う環境では、パスワードはハッシュ化(暗号化)されて、「encrypted_password」というカラムに保存される。
電話番号・郵便番号はinteger型ではないのか?
integer型では、「090」は「90」と認識される。
そのため、0から始まる電話番号や郵便番号はstring型にすべき。
is_deleted
とは?
退会状況を表すカラム。booleanは真偽値なので、trueかfalseの2択になる。
デフォルトはfalseなので、「退会していない」状況を表すことができる。
addresses テーブル
配送先情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | 配送先ID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
member_id | 会員ID | ⚪︎ | integer | ⚪︎ | |||
post_code | 郵便番号 | string | ⚪︎ | ||||
address | 住所 | text | ⚪︎ | ||||
tel_number | 電話番号 | string | ⚪︎ | ||||
name | 宛名 | string | ⚪︎ | ||||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
cart_items テーブル
カート内商品情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | カート内商品ID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
member_id | 会員id | ⚪︎ | integer | ⚪︎ | |||
item_id | 商品id | ⚪︎ | integer | ⚪︎ | |||
quantity | 個数 | integer | ⚪︎ | ||||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
items テーブル
商品情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | 商品ID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
genre_id | ジャンルid | ⚪︎ | integer | ⚪︎ | |||
name | 商品名 | string | ⚪︎ | ||||
item_details | 商品説明文 | text | ⚪︎ | ||||
price | 税抜き価格 | integer | ⚪︎ | ||||
is_sold_out | 販売ステータス | boolean | ⚪︎ | false | |||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
genres テーブル
ジャンル情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | ジャンルID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
name | ジャンル名 | string | ⚪︎ | ||||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
orders テーブル
注文情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | 注文ID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
member_id | 会員ID | ⚪︎ | integer | ⚪︎ | |||
name | 配送先宛名 | string | ⚪︎ | ||||
post_code | 配送先郵便番号 | string | ⚪︎ | ||||
address | 配送先住所 | text | ⚪︎ | ||||
tel_number | 配送先電話番号 | string | ⚪︎ | ||||
shipping_fee | 送料 | integer | ⚪︎ | ||||
total_price | 請求金額 | integer | ⚪︎ | ||||
status | 注文ステータス | integer | ⚪︎ | ||||
pay_method | 支払方法 | integer | ⚪︎ | ||||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
注文ステータス
と支払方法
について
要件定義書より、注文ステータスには、「入金待ち」「入金確認」「製作中」「発送準備中」「発送済み」の5種類があり、支払方法には「クレジットカード」「銀行振込」の2種類がある。今回、これらを enum
というシステムを利用して表したい。そのため、データ型をintegerにしている。
order_details テーブル
注文詳細情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | 注文商品ID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
order_id | 注文ID | ⚪︎ | integer | ⚪︎ | |||
item_id | 商品ID | ⚪︎ | integer | ⚪︎ | |||
price | 購入時価格(税込) | integer | ⚪︎ | ||||
quantity | 個数 | integer | ⚪︎ | ||||
making_status | 製作ステータス | integer | ⚪︎ | ||||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
製作ステータス
についても、enum を利用するため、integer型にしている。製作ステータスには、「着手不可」「製作待ち」「製作中」「製作完了」の4種類がある。
admins テーブル
管理者情報を扱うテーブルです。
カラム名 | 意味 | PK | FK | データ型 | NOT FULL | INDEX | DEFAULT |
---|---|---|---|---|---|---|---|
id | 管理者ID | ⚪︎ | integer | ⚪︎ | ⚪︎ | ||
メールアドレス | string | ⚪︎ | |||||
encrypted_password | パスワード | string | ⚪︎ | ||||
created_at | 作成日時 | datetime | ⚪︎ | ||||
updated_at | 更新日時 | datetime | ⚪︎ |
Discussion