請問像是Airtable或Excel這種表格的資料結構在DB該如何設計?
如果要幫每個用戶的每張表都在資料庫建立一個Table會不會很不實際?
當用戶增加一個column的時候是真的在table上增加一個欄位
只是這樣如果用戶數不斷增加尤其是像是Airtable或是notion這種SAAS資料庫內的表不就會超級多?
如果使用MongoDB這種NoSQL的資料庫又該如何在使用者刪除欄位的時候去每一筆資料內把那個欄位給刪除?
還是說有其他種資料庫或設計模式可以用?
謝謝
要跳脫一張表代表一個實體的概念
而是用多張表共同呈現一個實體
以 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 的解決方案是否更好?
請問像是Airtable或Excel這種表格的資料結構在DB該如何設計?
可參考微軟官方教學
如果要幫每個用戶的每張表都在資料庫建立一個Table會不會很不實際?
當用戶增加一個column的時候是真的在table上增加一個欄位
只是這樣如果用戶數不斷增加尤其是像是Airtable或是notion這種SAAS資料庫內的表不就會超級多?
如果使用MongoDB這種NoSQL的資料庫又該如何在使用者刪除欄位的時候去每一筆資料內把那個欄位給刪除?
如果資料結構設計正確的話
不會發生這種情形
還是說有其他種資料庫或設計模式可以用?
如果資料結構設計錯誤的話
就算換成區塊鏈或是元宇宙也沒有用
另外
花一點時間把先前的問題結案結一結吧