17.
關於訂單
- 當購物車做完之後,就要讓買家將之送出,成為訂單。
- 訂單一般需要兩個表,一個是用來紀錄誰買的、寄去哪裡、需要收多少錢等資訊,另一個表則是紀錄該訂單到底包含了哪些商品及數量。
- 這裡再重申一下,真正的訂單其實還有蠻多欄位的,不過我們時間有限,無法做那麼多東西,所以,關於退貨、物流、支付、備註...等這些常見的東西,我們都先省略。
- 先規劃訂單(
orders
)的資料庫結構:
欄位名稱 |
描述 |
類型 |
加索引緣由 |
id |
自動新增 ID |
unsigned big int |
主鍵 |
user_id |
下單的用戶 ID |
unsigned int |
外鍵 |
address |
收貨地址 |
text |
無 |
total |
訂單總金額 |
decimal |
無 |
closed |
訂單是否已關閉 |
tinyint, default 0 |
無 |
這裡我們把收貨地址用 JSON 格式保存而不是直接用一個外鍵連接到使用者的地址表,這樣會比較彈性一點。
- 接著規劃訂單詳情(
order_items
)的資料庫結構:
欄位名稱 |
描述 |
類型 |
加索引緣由 |
id |
自動新增 ID |
unsigned big int |
主鍵 |
order_id |
訂單 ID |
unsigned big int |
外鍵 |
product_id |
商品 ID |
unsigned int |
外鍵 |
amount |
訂購數量 |
unsigned int |
無 |
price |
商品單價 |
unsigned int |
無 |