notion database 必知必會
用過 mysql 的同學一定很容易上手 notion 。在 notion 中,掌握好 database,基本上就掌握了 notion 最核心的概念。
notion 的 database 對應的就是資料庫中的 table。在 notion 的 database 中每插入一條資料,實際上就是插入一個 page。
只是這個 page 能承載的東西非常多,包含文字,媒體,日期,甚至是另外一個 database。
使用一個 /database inline
就能在一個頁面內建立一個 database,而理解 database 的概念,就要理解它的每個設定項,每個設定項又有他們對應的屬性。
這樣設定項和屬性的對應聯絡如果都理解了,那麼 database 就掌握差不多了。
設定項
layout
這個準確說是 database 的展示屬性,它表示我們的 database 應該要以什麼形式在頁面中表現出來。
- Table
- Board
- TimeLine
- Calendar
- List
- Gallery
各種展示形式如字面意義描述,很清晰。
property
前面說過,database 中每條資料是一個 page,而資料中的每個欄位就是 page 中的 property。property 的型別非常豐富,並且目前還在不斷擴充套件中。
- Text
- Number
- Select
- Multi-Select
- Status
- Date
- Person
- Files & Media
- Checkbox
- URL
- Phone
- Formula
- Relation
- Rollup
- Created time
- Created by
- Last edit time
- Last edit by
- Button
- ID
其中大多數 property 都很好理解,這裡描述幾個不好理解的:
Formula
公式,這是非常有用的一個功能,我能用某種特定的語法來構造一段文字。
比如有個場景,notion 中建立一個 task 的database,有個property 名字是“需要番茄次數”,它是 int 型別。
並且我希望在外面的 table 欄中,有一列能顯示 如下字樣:“需要x 番茄” 或者空字串。
這個顯示文字列的邏輯是:如果“需要番茄次數”為 0,那麼這一列內容為空字串,如果不為空,根據“需要番茄次數”列拼接顯示字串。
這種需求就是 formula 型別的範疇了。我們建立一個列,它的 property 設定為 formula,並且為它編寫公式:
prop("需要番茄次數") >= 0? "需要" + prop("需要番茄次數") + "番茄":""
那麼它就能有如下的表現
relation & rollup
當一個database 和另外一個 database 有關聯的時候,我們就用到這兩個欄位。
什麼叫有關聯呢?就是 mysql 表中的 1 對多,多對多。
比如一個書籍表 和一個作者表,作者表的欄位包含姓名,年齡,地址。而書籍表的欄位包含書本的名字,作者。
我們希望作者表和書籍表的作者屬性進行關聯,即一個作者擁有多本書籍,那麼要怎麼做呢?
我們可以在作者表增加一個 Relation 型別 property ,並它關聯到書籍表 的條目。
這時候,我們就建立了一個作者表和書籍表的一對多關係。
那麼 rollup 又是什麼作用呢?
如果每個書籍還有價格,那麼我們不僅想在書籍表中看到價格,我們還想在作者表中看到這個作者的所有書的價格,我們就要用到 rollup 了。
我們在作者表建立一個 rollup 屬性欄位“書本總收入”,它使用 Sum 的計算方式,計算書籍表中的價格 property
最終表現如下:
relation 是描述兩個表關係,rollup 是透過 relation 來聚合某個欄位
button
button 如名所示,就是增加一個按鈕。我們可以為這個按鈕定義好行為。
這個按鈕點選的時候,我們可以觸發預先定義好的 action,比如在任務表中,我們可以定義 action 為將狀態修改為“已完成”,或者是將打卡時間設定為當前時間,那麼點選按鈕就會執行對應的行為了。
filter & sort
這兩個邏輯不難理解,按照某個欄位過濾表格(filter),按照某個欄位排列表格(sort)。和資料表查詢中的 where 以及 order by 是一模一樣的。
唯一特別的是,他們兩個用的頻度非常高,所以在直接在表格外層也可以直接設定。
我們可以很容易用 filter 和 sort 來建立出 “未完成任務檢視”,“本週任務檢視”,“優先順序排序檢視”等。
group
分組,顧名思義,按照某個欄位進行分組並且展示出來。
sub-item
如果你資料庫中的條目是有層級的,那麼使用這個sub-item是非常好用的。我們可以為一個條目建立一個子條目,那麼在實際資料表中,就會用 parent item,sub-item 將這兩個條目關聯起來。
在 notion 的 database 中,這個層級是無限的,你可以為某個條目建立一個子條目,再為子條目建立它的子條目。
dependency
我們的資料表如果表示的是任務,那麼就存在某些任務必須要完成才能開始下一個任務。這裡就可能會有任務 blocking 其他任務,也代表有任務會 blocked by 某個任務。描述這個關係就是 denpendency 的作用。
我們的表如果開啟了 dependency,那麼表中自動會加兩列:blocking 和 blocked by。
想要更清晰的看到他們的關係,我們可以用 timeline 時間線的形式來展示。
automation
這是一個自動化的功能,表示如果表格有什麼變動,那麼就執行什麼 action。
比如表格增加了一條資料,傳送一個訊息到 slack 中。
但是由於更多的 action 是需要付費的,我目前還不是付費使用者,所以沒有研究更多了。
load limit
當database 是 list 形式的時候,單頁面顯示條數,如果有更多,可以使用下拉的 Load more 來展示更多。
總結
這些設定項最核心的還是要設定好 property,這個 property 非常靈活,裡面的 formula 更是提供了無限的想象空間。能配合設計出很多奇特的表格。
入 notion 坑,不虧。