![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 Susan Chen ![]()
![]() |
假設我今天有兩個資料庫表,表一「商品資料」、表二「訂單資料」 而表一裡面有「品名、價格、進貨商、單位」將會成為表二的搜尋和排序的條件 我是該 1.在建立表二時也建立「品名、價格、進貨商、單位」欄位,在下語法時直接使用WHERE 和 ORDER BY就行了 或 2.表二只儲存表一商品序號(主鍵),使用LEFT JOIN和GROUP BY合併兩表來做搜尋及排序 我本來是想用方法1,但這樣變成在修改表一的「品名、價格、進貨商、單位」其中一欄時,表二也要同步修改,如果同一商品有好幾筆訂單,不就要改一堆資料~~ |
1樓
最有價值解答
缺氧的羊:窒息 ![]() ![]() |
很多時候, 的確是有必要特地在不同資料表中儲存相同資料的
(就是為了搜尋時可以減少不必要的join) ======================= 請google【反正規化】 ======================= 最終要採用1還是2, 取決於你自己...
本篇文章回覆於2019-04-13 00:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
不錯的參考
彩虹 ![]() |
由於你剛好碰的是「產品 與 訂單」的關聯
我說明一下另一個部分 訂單資料表,建議你將「品名、價格、單位」建立欄位做儲存 因為消費者的「訂單資料」是不得被修改的,應保持原資料的完整性 你試想一個情境,假設這一筆訂單是「2019 年 1 月」的訂單,有「A 產品」,價格為「100」(當初所買的價格) 結果產品在「2019 年 4 月」,管理人員將品名改為「超值 A 產品」,價格改為「120」 這時候消費者查看歷史訂單時: 1.你覺得應該顯示原有的資料「A 產品」「100」還是「超值 A 產品」「120」 2.那訂單總金額又應該為多少? 因此,你產品資料的變動,不應該再回去修改訂單上的產品資料
本篇文章回覆於2019-04-14 10:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
Susan Chen ![]() |
非常感謝兩位大大提供的觀念,兩個都對我很有幫助!!
本篇文章回覆於2019-04-15 10:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |