DB設計|テーブル定義書の作成

2023/08/15に公開

前提

こちらのER図をもとにテーブル定義書を作成しています。
https://zenn.dev/airiin/articles/02ed96e9a80885

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 ⚪︎
email メールアドレス 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 ⚪︎ ⚪︎
email メールアドレス string ⚪︎
encrypted_password パスワード string ⚪︎
created_at 作成日時 datetime ⚪︎
updated_at 更新日時 datetime ⚪︎

Discussion