PTT推薦

Re: [請益] 商城的訂單資料庫設計

看板Soft_Job標題Re: [請益] 商城的訂單資料庫設計作者
usayankees27
(qwer123)
時間推噓 4 推:4 噓:0 →:4

我並不是工程師,
目前也在自學中,
針對你的問題提供些答案與解決方向,
希望能幫助到原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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.176.95 (臺灣)
PTT 網址
※ 編輯: usayankees27 (114.45.176.95 臺灣), 06/22/2021 15:22:32

※ 編輯: usayankees27 (114.45.176.95 臺灣), 06/22/2021 15:39:09

ntpuisbest06/22 15:58謝謝認真回答!

taipoo06/23 01:31

MoonCode06/24 13:09我想說 ACID 的特性跟表的設計在這個新手階段不是很正

MoonCode06/24 13:09相關,請問你可以講講如果滿足或不滿足 ACID 的情況下

MoonCode06/24 13:09你的設計會有什麼差異嗎

ACID 的部分跟我畫的 ERD 沒什麼關係,我會提到主要是他的敘述讓我覺得他可能才剛接觸

※ 編輯: usayankees27 (114.44.116.66 臺灣), 06/24/2021 13:57:40

MoonCode06/24 15:51所以我問你 了解或不了解 ACID,設計會有什麼差別

MoonCode06/24 15:51我個人是覺得要別人去看一個東西要有它的意義

MoonCode06/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