---
# System prepended metadata

title: テーブル設計
tags: [高松コーディングブートキャンプ-オリジナルアプリ]

---

###### tags: `高松コーディングブートキャンプ-オリジナルアプリ`

# テーブル設計
※以下３つの機能に大分。
* SHOP(顧客側)
* SHOP(編集者側)
* BLOG

## SHOP(顧客側)テーブル

### customers テーブル

| Column             | Type      | options                    |
| ------------------ | --------- | -------------------------- |
| email              | string    | null:false, default:""     |
| encrypted_password | string    | null:false, default:""     |
| last_name          | string    | null:false                 |
| first_name         | string    | null:false                 |
| last_name_kana     | string    | null:false                 |
| first_name_kana    | string    | null:false                 |
| phone_numder       | string    | null:false                 |
| address_numder     | string    | null:false                 |
| city               | string    | null:false                 |
| address            | string    | null:false                 |
| building           | string    | null:false                 |
| birth_day          | date      | null:false                 |
| mailmagazine       | boolean   | null:false, default:"true" |
| last_login         | timestamp | null:false                 |

#### Association
* has_many:orders
* has_many:reviews

#### 備考
* 性別はActiveHashで管理
男性/女性/指定無し
* last_name:苗字
* first_name:名前

<br />

---

## SHOP(編集者側)テーブル

### editors テーブル

| Column             | Type      | options                |
| ------------------ | --------- | ---------------------- |
| email              | string    | null:false, default:"" |
| encrypted_password | string    | null:false, default:"" |
| name               | string    | null:false             |
| password           | string    | null:false             |
| last_login         | timestamp | null:false             |

#### Association
* belongs_to :
* has_many :

<br />

---

## SHOP(商品関連)テーブル

### items テーブル

| Column        | Type    | options                    |
| ------------- | ------- | -------------------------- |
| price_no_tax  | string  | null:false                 |
| price_in_tax  | string  | null:false                 |
| name          | string  | null:false                 |
| tax_id        | integer  | null:false                 |
| URL_path      | string  | null:false                 |
| category　　　 | references  | null:false,foreign_key:true |
| content       | string  |                            |
| visible       | boolean | null:false, default:"true" |

#### Association
* belongs_to :
* has_many : reviews
* has_one:categories
* has_one_attached:image
※画像は取り急ぎ１枚だけ登録

#### 備考
* 消費税はActiveHashで管理

<br />


### categories テーブル

| Column    | Type    | options                    |
| --------- | ------- | -------------------------- |
| name      | string  | null:false                 |
| URL_path  | string  | null:false                 |
| item   | references | null:false,foreign_key:true |

#### Association
* belongs_to :item

<br />

### orders テーブル

| Column   | Type       | options                     |
| -------- | ---------- | --------------------------- |
| customer | references | null:false,foreign_key:true |
| item     | references | null:false,foreign_key:true |
| coupon   | references | null:false,foreign_key:true |

#### Association
* belongs_to :
* has_many :   
* has_one_attached : coupon
※クーポンの実装は先延ばし予定

 #### 備考
* 送料はActiveHashで管理
3000円未満：500円  
3000円以上：0円  
※↑仮の設定

<br />

### reviews テーブル  

| Column       | Type     | options                       |
| ------------ | -------- | ----------------------------- |
| nickname     | text     | null:false                    |
| content      | text     | null:false                    |
| customers_id | interger | null:false, foreign_key:true |
| star_rating  | string   | null:false                    |
| visible      | boolean  | null:false, default:"false"   |

#### Association
* belongs_to : customer
* has_many :

#### 備考
* star_rating:5段階評価の星(★)の数

<br />

### coupons テーブル  
※クーポンの実装は先延ばし予定
| Column      | Type      | options    |
| ----------- | --------- | ---------- |
| content     | text      | null:false |
| start_at    | timestamp | null:false |
| end_at      | timestamp | null:false |
| off_rate    | string    |            |
| off_price   | string    |            |
| thumbnail   | string    | null:false |

#### Association
* belongs_to : 
* has_many : 
* has_one_attached : order

<br />

---

## BLOGテーブル

※MicroCMS(Headless CMS)で管理。

---