数据库介绍

type
status
date
slug
summary
tags
category
icon
password
网址
数据库由内容块或者非内容块数据组成,并以不同视图呈现,比如表格视图和看板视图(看板视图还在开发中)。

数据库可以用来干嘛?

主要用途是对信息进行汇总,比如可以做一个影视库。
notion image
notion image
 

插入数据库块

在文档中插入数据库:按 / 键,然后输入 sjk/数据库,回车。默认视图即表格视图
notion image
notion image
数据库块的结构如上图,表格的第一列是主键列,主键既可以是文本,也可以是块引用,在主键单元格内双击 [ 键就能对块进行引用。
 

数据库列类型

数据库的列类型有:
  • 文本
  • 数字
  • 单选
  • 多选
  • 日期(和时间)
  • 创建时间。当前行的创建时间。
  • 更新时间。当前行的更新时间。
  • 资源。可以插入各种文件
  • 勾选框
  • 链接
  • 邮箱
  • 电话
  • 关联
  • 汇总
  • 模板
前面的类型都比较好理解,关联、汇总、模板算是进阶的列类型。

表格视图

  • 通过 /数据库​ 创建,默认视图即表格视图
  • 添加不同类型的属性
  • 添加行
    • 非内容块:直接在表格中添加的行,不绑定到任何内容块
    • 内容块:通过拖拽到表格添加的行,或者通过块标菜单 添加到数据库​ 添加的行
  • 按需设置过滤和排序
  • 同一个数据库可以添加多个视图,所有视图共享相同的数据,但过滤和排序设置相互独立
 
 
 

关联列与汇总列

关联列是用来在两个数据库间建立联系的,关联列关联的是另一个数据库的主键。
关联列相较于文本列的好处在于:
  1. 可以在两个数据库间建立联系,数据库 A 修改后,数据库 B 中的相关列也会同步修改。
  1. 可以使用汇总列对所关联的数据库信息进行汇总。
 
notion image
汇总列是与关联列配套使用的,举个栗子,前文的电影数据库的导演演员列关联了人员数据库的主键(由于是双向关联,所以自动在人员数据库生成了电影导演电影演员列),在人员数据库中增加一个汇总列,则可以用汇总列在人员数据库中对电影数据库中的信息进行汇总,比如汇总当前人员担任导演的电影总票房。
 
notion image
 

数据库的保存与显示

数据库的数据在 工作空间\data\storage\av 文件夹下以 json 格式保存。
av, attribute view, 属性视图。
数据库功能最早是叫属性视图,后来随着功能的变化,改叫数据库了。
notion image
上图是帮助文档中的一个数据库,在 av 文件夹中的 json 文件内容为:
{ "spec": 0, "id": "20240208163918-rxu3llx", "name": "账单", "keyValues": [{ "key": { "id": "20240208163918-odyw3i7", "name": "成员", "type": "block", "icon": "", "numberFormat": "", "template": "" }, "values": [{ "id": "20240208163921-wnf3fqx", "keyID": "20240208163918-odyw3i7", "blockID": "20240208163920-51nyfyp", "type": "block", "isDetached": true, "block": { "id": "20240208163920-51nyfyp", "content": "Daniel", "created": 1707381561387, "updated": 1707381900674 } }, { "id": "20240208164408-fwrlt7q", "keyID": "20240208163918-odyw3i7", "blockID": "20240208164407-q5jgzt1", "type": "block", "isDetached": true, "block": { "id": "20240208164407-q5jgzt1", "content": "Vanessa", "created": 1707381848145, "updated": 1707381890239 } }] }, { "key": { "id": "20240208164200-aoez2h2", "name": "餐饮", "type": "number", "icon": "", "numberFormat": "", "template": "" }, "values": [{ "id": "20240208164415-frgrrdi", "keyID": "20240208164200-aoez2h2", "blockID": "20240208164407-q5jgzt1", "type": "number", "number": { "content": 200, "isNotEmpty": true, "format": "", "formattedContent": "" } }, { "id": "20240208164450-ssb7h5h", "keyID": "20240208164200-aoez2h2", "blockID": "20240208163920-51nyfyp", "type": "number", "number": { "content": 100, "isNotEmpty": true, "format": "", "formattedContent": "" } }] }, { "key": { "id": "20240208164420-mwu0h5t", "name": "服装", "type": "number", "icon": "", "numberFormat": "", "template": "" }, "values": [{ "id": "20240208164441-woggrha", "keyID": "20240208164420-mwu0h5t", "blockID": "20240208164407-q5jgzt1", "type": "number", "number": { "content": 200, "isNotEmpty": true, "format": "", "formattedContent": "" } }, { "id": "20240208164457-fzglttu", "keyID": "20240208164420-mwu0h5t", "blockID": "20240208163920-51nyfyp", "type": "number", "number": { "content": 100, "isNotEmpty": true, "format": "", "formattedContent": "" } }] }, { "key": { "id": "20240208164505-39qizr5", "name": "模板", "type": "template", "icon": "", "numberFormat": "", "template": ".action{ addf .餐饮 .服装 }" } }], "viewID": "20240208163918-47rg4d7", "views": [{ "id": "20240208163918-47rg4d7", "icon": "", "name": "表格", "type": "table", "table": { "spec": 0, "id": "20240208163918-o93ff8j", "columns": [{ "id": "20240208163918-odyw3i7", "wrap": false, "hidden": false, "pin": false, "width": "152px" }, { "id": "20240208164200-aoez2h2", "wrap": false, "hidden": false, "pin": false, "width": "97px" }, { "id": "20240208164420-mwu0h5t", "wrap": false, "hidden": false, "pin": false, "width": "126px" }, { "id": "20240208164505-39qizr5", "wrap": false, "hidden": false, "pin": false, "width": "129px" }], "rowIds": ["20240208164407-q5jgzt1", "20240208163920-51nyfyp"], "filters": [], "sorts": [], "pageSize": 50 } }] }
我们在文档中插入一个数据库块,实际上只是引用了这个数据库的 ID,数据并没有保存在这个文档的.sy 文件中,上图数据库块实际内容为:
<div data-type="NodeAttributeView" data-av-id="20240208163918-rxu3llx" data-av-type="table"></div>
所以我们复制、粘贴数据库块的时候得到的是一个镜像数据库,新旧数据库块均引用了同一个数据库 json 文件,操作不同的镜像数据库块实际上是在操作同一个 json 文件,所以数据会在镜像数据库块中同步。数据库的视图配置也是保存在 json 文件中的,所以镜像数据库会拥有一样的视图。 如果说数据库是一座房子,视图就是房子的窗户,透过不同的窗户可以看到不同的房间、不同的内容。目前数据库块已经能够通过 ial 属性指定视图 ID。
<div data-type="NodeAttributeView" data-av-id="20240320162849-h7ft87i" data-av-type="table"></div> {: id="20240328185202-s4wb423" updated="20240328185202" custom-sy-av-view="20240412114213-t3jq34i"}
我们可以总结:
  • 数据库:实质是 工作空间\data\storage\av 文件夹下某个 json 文件。
  • 数据库块:编辑器中用来显示、编辑数据库的块,实际是对数据库的引用,并不包含数据库内容。
  • 镜像数据库:引用同个数据库的多个数据库块互为镜像数据库。
    • notion image
经测试,删除所有数据库块,数据库的 json 文件也不会被删除,数据库并不会因为删除数据库块而丢失。后续有需要的话可以手动引用数据库。

数据库的深度复制

从上个章节可以知道,直接复制数据库块只会得到镜像数据库,并不会得到数据库的副本。
要对数据库进行深度复制,需要使用块标菜单中的 复制 → 复制为完整副本 功能,如果没有此功能,需要升级一下思源笔记。
得到完整副本后,将其剪切、粘贴到需要的位置即可。
notion image

数据库与块

数据库的主键可以是块,在主键单元格内双击 [ 键就能对块进行引用。数据库的属性会在块的属性面板—数据库页签中显示,可以在这个页签中对数据库进行修改。
notion image
点击页面上的数据库名称后,会显示引用该数据库的数据库块
notion image
 

https://ld246.com/article/1708493218325 - (作者:qiancang)
 
上一篇
嵌入第三方应用
下一篇
数据库模板
Loading...
文章列表
思源笔记用户指南
🍼新手引导
✏️基础操作
⛓️基础块
🧬高级块
📊数据库
🔡代码片段
🔍搜索进阶
🚀高级操作
💎会员特权
💠功能特性
🖼️主题推荐
🔌常用插件
💬交流区