iT邦幫忙

0

[已解決]表格的資料庫設計

  • 分享至 

  • xImage

請問像是Airtable或Excel這種表格的資料結構在DB該如何設計?

如果要幫每個用戶的每張表都在資料庫建立一個Table會不會很不實際?
當用戶增加一個column的時候是真的在table上增加一個欄位

只是這樣如果用戶數不斷增加尤其是像是Airtable或是notion這種SAAS資料庫內的表不就會超級多?

如果使用MongoDB這種NoSQL的資料庫又該如何在使用者刪除欄位的時候去每一筆資料內把那個欄位給刪除?

還是說有其他種資料庫或設計模式可以用?

謝謝

淺水員 iT邦大師 6 級 ‧ 2022-04-13 15:22:43 檢舉
我好像看錯問題,刪除
froce iT邦大師 1 級 ‧ 2022-04-13 16:28:13 檢舉
> 如果要幫每個用戶的每張表都在資料庫建立一個Table會不會很不實際?

當然很不實際...

> 當用戶增加一個column的時候是真的在table上增加一個欄位

以關聯式資料庫的話,通常是加外鍵,但目前notion這種應該會用noSQL。

> 如果使用MongoDB這種NoSQL的資料庫又該如何在使用者刪除欄位的時候去每一筆資料內把那個欄位給刪除?

沒用過,留個用過的高手回答。
不過NoSQL比較類似JSON,要處理這種變動欄位應該蠻容易的。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
鬼王很慘
iT邦新手 2 級 ‧ 2022-04-13 18:03:25
最佳解答

要跳脫一張表代表一個實體的概念
而是用多張表共同呈現一個實體
以 Notion 的 table 來說
Relational DB 大概會長這樣

+-----------+
| TABLE     |
+-----------+
| ID        |
| NAME      |
+-----------+

+-----------+
| COLUMN    |
+-----------+
| ID        |
| TABLE_ID  |
| NAME      |
| TYPE      |
+-----------+

+-----------+
| ROW       |
+-----------+
| ID        |
| TABLE_ID  |
| NAME      |
+-----------+

+-----------+
| ROW_VALUE |
+-----------+
| ID        |
| ROW_ID    |
| COLUMN_ID |
| VALUE     |
+-----------+

新增一個表格,寫入 TABLE
新增表格中的欄位,寫入 COLUMN
新增表個中的一筆資料,寫入 ROW
同時要查詢此 TABLE 中所有 COLUMN
並將值寫入 ROW_VALUE

刪改查也是類似的道理
的確有點小複雜
不確定 NoSQL 的解決方案是否更好?

skycover iT邦新手 4 級 ‧ 2022-04-15 12:31:04 檢舉

了解 感謝提供

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-04-14 17:02:21

請問像是Airtable或Excel這種表格的資料結構在DB該如何設計?

可參考微軟官方教學

如果要幫每個用戶的每張表都在資料庫建立一個Table會不會很不實際?
當用戶增加一個column的時候是真的在table上增加一個欄位
只是這樣如果用戶數不斷增加尤其是像是Airtable或是notion這種SAAS資料庫內的表不就會超級多?
如果使用MongoDB這種NoSQL的資料庫又該如何在使用者刪除欄位的時候去每一筆資料內把那個欄位給刪除?

如果資料結構設計正確的話
不會發生這種情形

還是說有其他種資料庫或設計模式可以用?

如果資料結構設計錯誤的話
就算換成區塊鏈或是元宇宙也沒有用

另外
花一點時間把先前的問題結案結一結吧

skycover iT邦新手 4 級 ‧ 2022-04-15 12:30:43 檢舉

之前的問題沒有答案隨便點一個最佳解答應該不是好事吧?會誤導其他有相同問題的人

https://ithelp.ithome.com.tw/upload/images/20220415/200017873wDRbEqdld.png

我要發表回答

立即登入回答