Notion 系列(一):页面与数据库的结构化实践
Notion 系列(一):页面与数据库的结构化实践
Categories: Tools
Last edited time: May 1, 2025 8:12 PM
Status: Done
Tags: Notion
这篇笔记会从自己使用的角度记录一下这段时间关于 notion 的学习,预计是会分成 2-3 篇去完成,第一篇就是一些比较简单的 notion 笔记使用方法 AKA Markdown 的写法,第二篇会记录一些数据库的学习和使用,以及一些想法
Notion 页面的基础使用
其实以我目前用笔记的方法来说,大部分还是以 markdown 的语法为主,毕竟平常导出的主要还是 MD 文件,所以想要尽可能的通用,而且从目前来说,notion 和 markdown 的语法基本上也是通用的
首先确认一个基础概念,notion 里面最小可分割的元素被称之为 block。换句话说,一段话是一个 block,标题是一个 block,代码是一个 block……任何元素在 notion 都是 block
ok,可以开始 notion 和 markdown 语法一致的总结了
- 首先是以
#
开头,写标题的快捷键,notion 也是一样的支持,不过 notion 只有 3 级标题,不像大多数的 markdown 支持到 6 级 - 加粗、斜体也可以用
**
和*
来实现,不过需要注意的是,目前~~
,也就是 cros through 是不支持的
加粗有的时候感觉分段会比较奇怪,可能是和空格/超链接有关系,notion 转换的并不一定是完全正确的 md 格式,我也有碰到粗体消失不见了,反而是多出来**
的情况 - block 的语法不太一样,在 notion 里面使用
>
会出现一个可折叠的 block,而不是一个 quote,notion 这里的语法要使用|
,或者""
- order list 和 unordered list 使用方法一致
- checkbox 的方法不太一样,在 notion 里直接使用
- [ ]
会优先转化成一个 list,所以 checkbox/todo 的语法是[ ]
- hr,也就是三个
-
的实现是一样的。并且在 notion 里面,只要出现了三个-
,不管是不是在 code block 里,都会出现<hr />
- 代码块实现也比较相似,不过需要注意,行内代码+中文字符的搭配情况,一定要加空格才会出现代码块。整体的代码块也可以使用 `````的方法自动显示,接下来可以手选对应的代码格式
- indent 可以用 tab 也可以用空格实现
一致的使用方法结束了,下面换一些不一样的使用方法
这部分的内容我感觉原生的 markdown 的实现方法不太一样,或者不一定能够完全支持,如果只用 notion 的话问题不大,如果需要把 markdown 导出到其他平台的话,使用还是可以稍微谨慎一些
- 随意拖拽/排序
这是 markdown 中管理比较困难的地方,notion 可以支持随意地排列状态,这样可以很简单的形成类似 flex/grid 的结构。同样,任意 block 也可以随意拖拽,进行重新排序
比如说我现在在用的一个结构:
- 字体颜色,背景颜色
这种功能在 markdown 里实现起来会稍微困难一些,一般来说需要用到 CSS 去实现,但是在 notion 中就很简单了,只需要选中想要修改颜色的部分,就能根据提示操作:
具体效果如下:
字体颜色的修改
背景颜色的修改
- 多媒体文件
markdown 原生支持图片,并且语法还挺简单的,不过 notion 支持的类型更多,有图片、语音、视频等,语法为/image
,/audio
,/video
,/file
等
这里需要注意的是,图片的语法,notion 和 markdown 可以无缝衔接,但是其他的多媒体格式我不是非常的确定……
notion 的展示效果很好就是了,如:
https://www.bilibili.com/video/BV1HrL7zVEFe/?spm_id_from=333.1007.tianma.4-4-14.click
- callout
我的理解是 callouts 是一种特殊的 quote 元素,他们的展示效果比较像。callout 的主要特点在于会有一个 icon,如:
但是目前看来,在 csdn 上的支持感觉不是特别好:
- table
table 其实没什么特别的,notion 除了 row header 之外还支持 column header,这样实现方法可以更加的多样化:row header col header 效果如下: 整体来说,notion 上的 table 增删 row/column 是一件更简单的事情 - TOC
这个现在大多数 markdown 都支持的,不过二者的语法似乎不太一样。notion 中可以使用/table of content
显示一个 TOC,但是当我试着导出到 markdown 的时候,这个 TOC 一般会被删除掉 /web bookmark
这个也是一本比较有趣的功能,相当于可以在 notion 中放一个网页的 snapshot
[MERN 项目实战] MERN Multi-Vendor 电商平台开发笔记(v2.1 基础工程化:Turborepo + Yarn Workspaces)-CSDN 博客
效果如下:
- 其他
/
这里提供的东西真的很多,尤其是如果同意同步账户的话,包括:- github/gist/gitlab/
- codepen
- jira
- google drive
- google docs
- figma
- tweet(X)
- …
这部分的功能还是需要自己 explore,并且根据自己的需求去添加,比如:
数据库
数据库是一个我现在刚刚开始使用,并且已经觉得惊为天人的功能了……
毋庸置疑的,数据库的存在是让 notion 超过 typora、obsidian、onenote 笔记之类的其他工具的存在。它的创建方式也很简单,我现在还是偏好使用 /database
的方式去使用,而非创建一个专门的数据库——我还没有能够找到在后者中加入其他 block 的方法,而使用前者,则是将 database 作为单独的一个 subpage,这样可以在主页添加一些内容,这是我现在的使用方式:
对比一下现在主页面显示的风格:
整体来说我觉得这种风格还是比较符合我个人偏好的,想要嵌套可以嵌套,想要平铺也可以直接通过数据库中的 relation
中进行关联,找内容也比较方便,尤其相比较我之前的整理方式:
这种方式真的是哪天忘了要写的笔记——这也不是没发生过的事情——找起来都很麻烦,而且也难以追踪进度
database 基础操作
创建方法我已经介绍过了,可以在页面中使用 /database
创建一个新的 db,新的 db 创建后是这样的:
这里点击新的 database 会出现不少的选项,我个人觉得最主要的是这两个:
第一个是 Turn into inline database
,这个选项可以在页面内显示数据库的资料,就像我上面截图的那样。选择 inline db 还是 ful page 基本就看个人需求和偏好了
第二个是 merge with CSV
,如果有额外的数据可以合并的话,当前的数据库可以通过加载 csv 的方式更新数据
目前 notion database 支持的类型有这些:
大多数还是比较直接的,除了 ID——这个就真的像数据库 id 一样——没用过,其他我都基本上是用了一下,其中:
- status 是一种特殊的 select,notion 自动分了三个组,
not started
,in progress
和done
,懒得做 preset 可以直接用 status,更方便 - created time,created by,last edited time, last edited by 也是一种特殊的时间格式,个人项目中 by 的用途不是很大,毕竟就一个人更新,但是如果有合作的话,这几个 fields 还是很有效的,而且是 notion 自动管理,不需要手动更新
- formula,目前我觉得 notion 的 formula 写起来不是很方便,特别是条件控制的这部分真的不太友好
- relation 相当于是外链,可以连接别的数据库
- rollup 这个直观的解释比较困难,稍微抽象一点的说,有点像 fomula+relation,可以聚合外链数据库中的信息
每个 column 在主 table 都是可以设置隐藏的
我这里简单的写了个案例,大概看起来是这样的:
如果光是这么看起来的话,notion 和 excel 比起来好像也没什么区别,从便携的角度来说,还没有 csv 方便&小。但是它有一个优点,就是可以打开每条数据,查看更具体的内容,如:
因为每一条 record 本质上还是一个 page,所以里面可以放更多的内容,同样的,每一个 page 下面也能够包含更多的 pages/databases,这样的嵌套+relation 让 notion 的功能变得更加的强大,用得好的话,管理也会变得更加的容易
这里的 total time 是用 formula 做的,取得是 prep+cook,在主页面中觉得噪音太大的话,可以显示隐藏 prep time 和 cook time,这些数据在子页面中还是会显示的,只是不在主表中展现而已
database 的 view
这是另一个 notion 非常强大的地方,到目前为止,我放的都是表格(table)的 view,事实上,notion 还支持其他不同的 view,我这里用我手上有的几个 view 做一下 example
你可以创建多个同样的 view,即你可以创建多个 table/gallery/kanban,并且通过不同的名字/filter 起到方便管理的作用。notion 中的 filter 是持久化的,关掉页面并不会丢掉 filter
- gallery
这个模式我自己是用不上的,但是确实挺好看……如果以后打算通过 notion host 自己的 blog 的话,gallery 看起来挺合适的
向上面的 callout 提到的,notion 中可以创建多个 gallery,也就是说,以 personal blog 为例,你可以做到创建两个 gallery view,一个可以叫最后更新,一个可以叫最高评价,可以通过个性化排序的方法创建两套 views
目前我没看到 gallery view 可以选择渲染多少个 column,这种可能会需要手动控制一下,通过管理 card 的尺寸去进行操控……不过总体来说应该是比较符合大部分 responsive design 的,不想特别花时间去搞 CSS 的情况下也是够了 - board
这种就是比较传统的看板格式了,对于个人项目之类的,比较好用。不再个人项目的话,做 crm/sprint 管理也挺好的
补充一下关于 sprint 管理的方法,这里其实可以通过 sub group 的方式进行管理:
我这里是默认排序,如果想要更好的时间排序,可以通过 sort start/end/due date 进行。我这里是个人项目,没办法很好的比较 start/end date,所以这里就不放了
notion 是可以通过now()
获取当前日期的,所以定义好这个日期区间能够非常动态的显示当前的 sprint,一起前后几个 zhou qi - calendar
calendar 的话,主要是 assignment 这种比较方便,比如说我做了个 demo,大概是这样的:
这种情况下,所有的 assignments 看起来就比较清晰 - timeline
这个格式我觉得有 duration 会比较好,也是适合 sprint 管理吧……目前来说我手上的另一个案例,就是前面 calendar 改了一下的:
database 的组合运用
这里就是完整的过一遍我上面做案例的设计思路和想法……
其实从 istudiez pro 发组跑路后——这 app 我是真用了十年多,从 2012 开始的,因为断断续续的工作啊回到学校啥的,还开了 subscription 去同步 cloud info——我就在想找一个比较合适的代替品,没有想到居然是在这个时间点找到了……timeline 是我按照 syllabus 重新生成的,时间线大体看看就好了
首页的管理是这样的:
基本上来说我想让首页保持的稍微干净一些,只需要保留一些必要的资料就行了
- semester
目前的排序是这样的:
基本的内容和 istudiez pro 中保留的差不多,结构虽然不太一样,不过核心内容都是相同的。理论上来说这里还能够再放一个 column 去计算这个学期的 GPA,不过我还没搞明白 GPA 的算法,暂时就不研究了 - courses
目前是这么设计的:
grade 的 formula 我目前是写好了,通过 rollup 拿到 tasks 里的分数进行的计算,它的评分机制有三种:- ✅ 作业按照百分比给分
比如说一个 final paper 可以是 10%-20%的总成绩 - ✅ 作业按照总分给分
这个情况下,final paper 可能是 100-200 分,然后总分是 1000 分 - ❌ 混合
这个就是 weight+points 的结合,之后做不做的话看有没有需求吧……就像我前面说的,notion 的 formula 其实实现起来没这么简单,尤其是对比 csv+python/node 这种实现
GPA 是另一个头疼的地方,根据学校的不同,我记得 GPA 计算起来是有两种风格: - 区间制
这个……是最头疼的地方
有些学校 97%以上是 A+,GPA 是 4.2/4.0
有些学校 A 和 A+都是 4.0,区间在 95%以上,然后 89/90-95%这个区间是 A,也就是 3.7
还要考虑一个 curve 的问题……
在 instructor/professor 话语权比较重的学校,一门课一个评分方式都是有可能的…… - 整分制
这个是最简单的,A 就是 4.0,B 就是 3.0,C 就是 2.0
这种情况下的 curve 是交给 instructor/professor 的
所以我完全没做 GPA……
semester 的话,就是通过 relation 做外链实现的,tasks 是下面的这个表,也是双向外链。大多数情况下我都会建议通过双向外链做,如果用不上就隐藏……单向后期要改会比较麻烦
- ✅ 作业按照百分比给分
- tasks
这个就比较简单了,就是一个个零散的小 task,善用外链就好了:
总体来说,这就是一个相对比较复杂的一个 notion 学习管理的结构,根据需求的不同,还可以添加一下书籍的外链,这样也可以管理要读的文献和 paper
Notion Web Clipper
这个是上面提到的 paper 的管理方式,这是一个 extension,可以把一个网页保存到一个 notion 中去,mobile app 中也可以使用
如果实在 springer 这种网页平台上读的 paper,想要保存在 notion 笔记中,可以通过 Web Clipper 去实现
Notion Mail
我也是看到 Notion 的 notification 才知道的这个东西,打开试了一下,是一个独立的网页,通过同步 gmail 的方式,以类似 notion 的管理风格管理 email
我只是提一下这个东西,目前来说我还没有看到特别有用的地方……我本身对 email 的管理也不是很好就是了……