• notion database 必知必会


    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 坑,不亏。

  • 相关阅读:
    Supabase 自托管部署实践
    接口压力测试 jmeter--增强篇(二)
    Scaling Memcache at Facebook
    计算机毕业设计——基于html汽车商城网站页面设计与实现论文源码ppt(35页) HTML+CSS+JavaScript
    快速排序与归并排序的链式实现(golang)
    笔试题之指针结合数组的精讲2
    Bug:Mac版Goland无法进行debug
    docker-compose安装ES7.14和Kibana7.14(有账号密码)
    【编程不良人】SpringSecurity实战学习笔记04---RememberMe
    SpringBoot学习(四)NoSQL、接口文档、远程调用、消息服务、Web安全、可观测性、AOT
  • 原文地址:https://www.cnblogs.com/yjf512/p/18069955