---
# System prepended metadata

title: "\U0001F3C5 Day 38"
tags: [Node.js 直播班 - 2022 春季班]

---

---
tags: Node.js 直播班 - 2022 春季班
---
# 🏅 Day 38



## 常見資料庫設計
![](https://i.imgur.com/kfxXBxn.png)
常見的資料庫設計有上圖幾種情況
其中一對多有分成 1: few 及 1: many，1:few 在多數的部分數量是可預期的，如一本書籍可能會有多個作者，1:many 在多數的部分則可能無法預期上限，如評論

另外在資料庫設計上也需注意是否可能超過 MongoDB document 16mb 的容量限制，（若是可能超過容量限制，則會影響是否將該欄位的資料獨立為一個 collection）

例如以下情況
:::spoiler {state="open"} 貼文按讚設計
![](https://i.imgur.com/JJ1Nz8J.png)

以貼文的 likes 欄位為例，若將 likes 欄位的資料獨立為一個 collection，貼文中就不會有 likes 欄位存放使用者的 ID，而是由個別的 likes 資料關聯貼文 ID
:::





### 題目（將答案寫在 HackMD 並提交至回報區）
請依據不同需求情境，回覆以下問題
1. 會不會超過 MongoDB document 16mb 的容量限制
2. 使用上圖哪一種資料庫設計
選項：==一對一==、==一對多 (1: few)== 、==一對多(1:many)==、==多對多==

回覆範例

```
情境一
1.是
2.一對多(1:few)

情境二
1....
2....

情境三
...
```

#### 情境一 對動態按讚功能

:::spoiler 示意圖
![](https://i.imgur.com/CnyN6YG.png)

:::

1. 由於最終作業為一個社群網站，以 NFT 設計，有限制 500 位會員在其中交流，因此在 likes 欄位中最多會有 499 - 500 個 ID，請問會不會超過 MongoDB document 16mb 的容量限制
2. 若是採用方案 B，會是 likes 欄位適用哪一種資料庫設計

#### 情境二 互相追蹤功能（following / followers)
1. 假設在社群網站中 500 位會員彼此都互相追蹤，在 [user 資料](https://github.com/gonsakon/express-week4-sample/blob/week8/models/usersModel.js#L29-L46)中， following 與 followers 都各有 499 個 ID，會不會超過 MongoDB document 16mb 的容量限制
2. 請問此情境適用何種資料庫設計



#### 情境三 貼文留言功能

```json
posts
{ 
 id: 3,
 userId: "123456",
 content: "test",
 imgUrl: "https:// ....",
 comments: [
  { 
   user: "12345",
   photo: "https:// ....",
   content: "123123123..."
  },
  {
    ...   
  },
  ...
 ]
}
```

1. 以上方貼文資料為例，若在一則貼文中有多個留言，留言數與留言內容量無法預測，是否可能超過 MongoDB document 16mb 的容量限制
2. 請問此情境適用何種資料庫設計



回報流程
---
請同學依照下圖教學觀看解答、回報答案:

![](https://i.imgur.com/QtL8zEW.png)

回報格式：請在「回報區」貼上 CodePen 或 HackMD 連結回報答案 (為了統計人數，請同學依序加上「報數」)


<!-- 解答
情境一
1.不會
2.一對多(1:few)

情境二
1.不會
2.多對多

情境三
1.會
2.一對多(1: many)
-->

回報區
---

| 報數 | 組別 / 名字 | codepen / hackMD / 其他回饋 |
| ---- | ----------- | ------------------ |
|1| 第 3 組 / Hobby   |  [HackMD](https://hackmd.io/@hobbyling/day38)  |
|2| 第 3 組 /  hiYifang   |  [HackMD](https://hackmd.io/@gPeowpvtQX2Om6AmD-s3xw/SJa_42Wu9)  |
|3|第 14 組｜East|[HackMD](https://hackmd.io/HRzdByxLRNSlZinO9bxwhg)|
|4|第 4 組｜苡安|[HackMD](https://hackmd.io/A-0l9NwOQEaZ3qfae5dekQ)|
|5|第 5 組 @ Hazel|[HackMD@Hazel](https://hackmd.io/@hazelwu/day38)|
|6|第 11 組 Han Lai|[HackMD](https://hackmd.io/FzZKvqBQSWWEA1FwQi2zvQ?view)|
|7|第 16 組 皓皓|[HackMD](https://hackmd.io/@cutecat8110/rJ59LKbic)|


