蟹老闆架設一個蝦x商城,餐廳資料庫使用MySQL,販售美味蟹堡套餐,一個套餐包含蟹堡、薯條、飲料,無天良的蟹阿金要求紀錄訂單資料,此外龜毛的他還要求每筆訂單都要包含以下資訊。
流水號、顧客大名、日期、顧客評論、商品編號、數量、單價
蟹堡、薯條、飲料商品編號1、2、3
章魚哥:就全部塞到同一張表就行了
蟹老闆:好,那今天蟹堡要漲價,套餐要新增炸海草4,去掉比較貴的薯條2,顧客評論如果是負評就全部刪掉
章魚哥:不管你要我做什麼工作,我都不會做的
由上方的圖可以看出,資料耦合嚴重,欄位設計不合理,一旦要更動特定數據,操作起來相當繁複
海綿寶寶:拆分成訂單、商品銷貨明細兩張表
1.訂單包含流水號、顧客大名、日期、顧客評論
2.商品銷貨明細包含,訂單編號、商品編號、數量、單價
1.從下訂單的商業邏輯可以看出,假設派大星下一筆訂單,訂單表必須新增一筆資料,商品銷貨明細則必須新增3筆資料
(蟹堡1、薯條1、飲料1)
2.接下來就可以來寫插入分級資料的SQL語句
INSERT INTO spongebob_order (order_id, name, order_date,comments)
VALUES (default, 'patrickStar','2019-01-01', 'good');
INSERT INTO spongebob_order_items
VALUES
(default, 1, 10, 10),
(default, 2, 10, 10),
(default, 3, 10, 10);
1.訂單
2.商品銷貨明細
Day8-談談SQL的執行順序與部分核心觀念(番外篇)
寫這篇文章時,想起自己的表弟(國一)很喜歡海綿寶寶,索性就把這篇文章傳給他看,並半開玩笑地問他看不看得懂,沒想到他竟然回我他都讀懂了,現在的小孩真厲害。