--- tags: Node.js 直播班 - 2022 春季班 --- # 🏅 Day 37 ## MongoDB 資料設計 embedded / references 常見的資料庫設計有:**embedded** 及 **references** ![](https://i.imgur.com/TkJ5tXJ.png) 像是第四週有練習的 Mongoose populate 語法,因貼文資料會加入 user 欄位把使用者資料加入,不過因使用者的資料在眾多貼文中可能會重複,並且是可能會被修改的,若將資料寫死在貼文資料中,修改上會很麻煩,因此可以將使用者資料另外放一個 Model,取得貼文時再使用 populate 關聯使用者資料,確保取得貼文時帶入的是最新的使用者資料 實作上也會依不同需求情境來選擇要使用哪種資料庫設計 ### 題目(將答案寫在 HackMD 並提交至回報區) 請依據以下描述的情境選擇要使用 ==**方案 A embedded**== 或 ==**方案 B references**== 的做法 回覆範例 ``` 題目一 1.A 2.B 3.A 題目二 A 題目三 ... ``` [題目來源](https://whimsical.com/3CkqgyD3n3GvsCrdkywruw) #### 題目一 ![](https://i.imgur.com/EpvwLTV.png) 1. 製作訂房系統,但希望可以做註冊登入功能,另外儲存使用者資料,訂單資料同時也會需要紀錄使用者的資料 2. 以留言板的模式製作一個較陽春的訂房系統,預約一個房型就如同新增一個留言,為了節省開發成本,不會新增其他資料,也不需註冊會員 #### 題目二 ![](https://i.imgur.com/nJHXQ2o.png) 該火車時刻表每天會被查詢近千萬次,班次資料幾乎都是固定的,變更頻率低(很常被讀取,較少被寫入) #### 題目三 ![](https://i.imgur.com/0IgKTdF.png) 使用者可以時常新增貼文(無法預測貼文數量),系統也允許修改個人資料 例如:修改個人大頭貼後,所有該使用者發布的貼文的個人大頭貼都會同步更換 使用者也很常觀看其他人的貼文,貼文中也會顯示個人資訊 #### 題目四 ![](https://i.imgur.com/F6VFGcX.png) 依[設計稿此頁](https://xd.adobe.com/view/c0763dbe-fc15-42e8-be0b-8956ed03e675-9525/screen/ace2ccc4-7e50-401b-998a-a14f49e87918/specs/)設計 貼文的數量不可預測,按讚資訊不會顯示出按讚者的資訊,同時使用者資料可能隨時變更 回報流程 --- 請同學依照下圖教學觀看解答、回報答案: ![](https://i.imgur.com/QtL8zEW.png) 回報格式:請在「回報區」貼上 CodePen 或 HackMD 連結回報答案 (為了統計人數,請同學依序加上「報數」) <!-- 解答 題目一 1.B 2.A 題目二 A 題目三 B 題目四 B --> 回報區 --- | 報數 | 組別 / 名字 | codepen / hackMD / 其他回饋 | | ---- | ------------------- | ------------------------------------------------------------- | | 1 | 第 5 組@Hazel | [HackMD@Hazel](https://hackmd.io/@hazelwu/day37) | | 2 | 第 3 組 / hiYifang | [HackMD](https://hackmd.io/@gPeowpvtQX2Om6AmD-s3xw/SJa_42Wu9) | | 3 | 第 4 組 / 苡安 | [HackMD](https://hackmd.io/rSYXGBWNTlOeAfFSwbaqGw) | | 4 |第 9 組 / konstante |[HackMD](https://hackmd.io/1pItWPgoQ72qrVuA_LRh6Q?both)| | 5 |第 14 組|East |[HackMD](https://hackmd.io/7ALz6DGaRzmHiJ0xEhSKng)| | 6 | 第 2 組|wendy | [HackMD](https://hackmd.io/80FIwll1QUa4u0-WoBv-hQ#20220527) | | 7 |第 3 組|Hobby |[HackMD](https://hackmd.io/@hobbyling/day37)| | 8 |第 1 組|Emily Hsi |[HackMD](https://hackmd.io/@EmilyHsi/S19tZAr_5)| | 9 |第 15 組|yolala |[HackMD](https://hackmd.io/se8wVTjCQQG92hW60IGPGg)| | 10 |第 11 組|Han Lai |[HackMD](https://hackmd.io/Ejtj7JoRR7yOCqrAoZjbdA?view)| | 11 |第 16 組|皓皓 |[HackMD](https://hackmd.io/@cutecat8110/H1CNNY-sc)|