notion database 必知必會

轩脉刃發表於2024-03-13

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
  • Email
  • 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("需要番茄次數") + "番茄":""

那麼它就能有如下的表現

image-20240312095407296

relation & rollup

當一個database 和另外一個 database 有關聯的時候,我們就用到這兩個欄位。

什麼叫有關聯呢?就是 mysql 表中的 1 對多,多對多。

比如一個書籍表 和一個作者表,作者表的欄位包含姓名,年齡,地址。而書籍表的欄位包含書本的名字,作者。

我們希望作者表和書籍表的作者屬性進行關聯,即一個作者擁有多本書籍,那麼要怎麼做呢?

我們可以在作者表增加一個 Relation 型別 property ,並它關聯到書籍表 的條目。

image-20240312101048732

這時候,我們就建立了一個作者表和書籍表的一對多關係。

那麼 rollup 又是什麼作用呢?

如果每個書籍還有價格,那麼我們不僅想在書籍表中看到價格,我們還想在作者表中看到這個作者的所有書的價格,我們就要用到 rollup 了。

我們在作者表建立一個 rollup 屬性欄位“書本總收入”,它使用 Sum 的計算方式,計算書籍表中的價格 property

image-20240312101231241

最終表現如下:

image-20240312101325480

relation 是描述兩個表關係,rollup 是透過 relation 來聚合某個欄位

button

button 如名所示,就是增加一個按鈕。我們可以為這個按鈕定義好行為。

這個按鈕點選的時候,我們可以觸發預先定義好的 action,比如在任務表中,我們可以定義 action 為將狀態修改為“已完成”,或者是將打卡時間設定為當前時間,那麼點選按鈕就會執行對應的行為了。

image-20240312102102138

filter & sort

這兩個邏輯不難理解,按照某個欄位過濾表格(filter),按照某個欄位排列表格(sort)。和資料表查詢中的 where 以及 order by 是一模一樣的。

唯一特別的是,他們兩個用的頻度非常高,所以在直接在表格外層也可以直接設定。

image-20240313073108572

我們可以很容易用 filter 和 sort 來建立出 “未完成任務檢視”,“本週任務檢視”,“優先順序排序檢視”等。

group

分組,顧名思義,按照某個欄位進行分組並且展示出來。

sub-item

如果你資料庫中的條目是有層級的,那麼使用這個sub-item是非常好用的。我們可以為一個條目建立一個子條目,那麼在實際資料表中,就會用 parent item,sub-item 將這兩個條目關聯起來。

在 notion 的 database 中,這個層級是無限的,你可以為某個條目建立一個子條目,再為子條目建立它的子條目。

image-20240313073347613

dependency

image-20240313074141284

我們的資料表如果表示的是任務,那麼就存在某些任務必須要完成才能開始下一個任務。這裡就可能會有任務 blocking 其他任務,也代表有任務會 blocked by 某個任務。描述這個關係就是 denpendency 的作用。

我們的表如果開啟了 dependency,那麼表中自動會加兩列:blocking 和 blocked by。

image-20240313091541051

想要更清晰的看到他們的關係,我們可以用 timeline 時間線的形式來展示。

image-20240313091625322

automation

這是一個自動化的功能,表示如果表格有什麼變動,那麼就執行什麼 action。

比如表格增加了一條資料,傳送一個訊息到 slack 中。

image-20240313091826211

但是由於更多的 action 是需要付費的,我目前還不是付費使用者,所以沒有研究更多了。

load limit

當database 是 list 形式的時候,單頁面顯示條數,如果有更多,可以使用下拉的 Load more 來展示更多。

總結

這些設定項最核心的還是要設定好 property,這個 property 非常靈活,裡面的 formula 更是提供了無限的想象空間。能配合設計出很多奇特的表格。

入 notion 坑,不虧。

相關文章