作者usayankees27 (qwer123)
看板Soft_Job
標題Re: [請益] 商城的訂單資料庫設計
時間Tue Jun 22 15:18:14 2021
我並不是工程師,
目前也在自學中,
針對你的問題提供些答案與解決方向,
希望能幫助到原po,
版上的其他前輩們,
如果認為我的答案有錯誤或增進的空間,
再請各位提點與指教。
※ 引述《ntpuisbest (阿龍)》之銘言
: 想問問假使我有一個網路商城
: 使用者甲有可能會在A商店 買了 兩個羽球拍 一顆籃球
: 使用者乙有可能在A商店 買了 三雙球鞋
: 那麼我的訂單資料庫設計欄位
: 是應該要每個商品都要佔據一個列會比較適合嗎
: 訂單編號 商品名稱 店家名稱 商品數量
: A1 羽球拍 A 2
: A1 籃球 A 1
: A2 球鞋 A 3
: 我的理解是使用者甲雖然買了兩樣東西,但是這是同一筆訂單,所以訂單編號要相同
: 我都假設成A1這樣
: 可是這樣設計的話,萬一使用者甲一次買十樣商品,
: 那我的資料庫不就要有十列來存
: 想問這有更好的設計方式嗎?
先決定你資料庫要用 SQL 還 NoSQL,
你看起來像是要用 SQL,
那你的問題就是沒有把資料表正規化,
依你文中的敘述簡單畫個 ERD,
關鍵字 正規化 了解下,
就能看懂與理解為什麼要這樣設計,
另外你之後的資料操作,
Transaction 與 ACID 關鍵字可以看看。
https://i.imgur.com/BSE1Svt.jpg
: 另外想問另外一個問題是
: 如果是一般的註冊使用者帳號密碼的表單傳到後端,我知道後端
: 可以用name來接收
: 但是如果是購物車
: 要怎麼樣把使用者 打勾的 羽球拍 籃球
: 都用json傳到後端
: 畢竟不同商店都有不同的產品清單
: 這方面我也不可能去把每一個商店的購物畫面都刻一遍
不需要畫面一個一個刻,
我以前用 Angular 可刻一個空白畫面,
API 取資料後再把資料代入,
其他的前端框架應該也能做到。
從你的文中敘述,
不缺定你是否已有基本的基礎知識,
建議你到
https://github.com/kamranahmedse/developer-roadmap
看看,相信對你會有幫助
----
Sent from
BePTT
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.176.95 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1624346296.A.C05.html
※ 編輯: usayankees27 (114.45.176.95 臺灣), 06/22/2021 15:22:32
※ 編輯: usayankees27 (114.45.176.95 臺灣), 06/22/2021 15:39:09
1F:推 ntpuisbest: 謝謝認真回答!06/22 15:58
2F:推 taipoo: 推06/23 01:31
3F:推 MoonCode: 我想說 ACID 的特性跟表的設計在這個新手階段不是很正06/24 13:09
4F:→ MoonCode: 相關,請問你可以講講如果滿足或不滿足 ACID 的情況下06/24 13:09
5F:→ MoonCode: 你的設計會有什麼差異嗎06/24 13:09
ACID 的部分跟我畫的 ERD 沒什麼關係,我會提到主要是他的敘述讓我覺得他可能才剛接觸
※ 編輯: usayankees27 (114.44.116.66 臺灣), 06/24/2021 13:57:40
6F:推 MoonCode: 所以我問你 了解或不了解 ACID,設計會有什麼差別06/24 15:51
7F:→ MoonCode: 我個人是覺得要別人去看一個東西要有它的意義06/24 15:51
8F:→ MoonCode: 我認為這階段這不是一定要了解的知識06/24 15:53
M大的第一個疑問,
ACID 與 資料表設計關係,
是我文中敘述的問題,做了修正,
我個人覺得兩者沒直接關連,
正規化是以減少資料重複,
與避免資料更新異常為目的,
來決定資料如何儲存,
ACID 則是為了資料操作前後資料的正確,
要求資料操作須符合的4個特性。
第二個疑問 ACID 原PO 現階段是否要了解,
我的出發點是原PO 正在做作品,
做到商城資料操作時會有幫助,
M大若有其他想法或認為我的敘述有錯誤,
再請你回覆或另發篇文,感謝。
※ 編輯: usayankees27 (114.44.116.66 臺灣), 06/24/2021 18:42:08
※ 編輯: usayankees27 (114.44.116.66 臺灣), 06/24/2021 19:06:01