数据模型与数据库
Zion 提供了功能强大的关系型数据库,能够创建结构完整的数据模型,表与表之间可以建立灵活的关联。
开始使用
打开编辑器左上角的“数据”
数据模型:表的管理,包括建表、建字段、建关联等操作
数据库:数据的管理
数据表管理
表是数据模型的核心,在这里存储结构化的数据。在 Zion 上可以非常方便地进行表管理。
1. 创建表
点击“添加”,确定表的属性:
表名:不能用“log”、“column”、“index”等名字
描述:表的描述,非必填
对所有角色开放权限:表权限管理,打开后所有角色都有该表的增删改查权限。详情查看:权限管理
例如创建一张“博客文章”表
2. 添加列
每张表创建后,默认有三列:id、创建时间、更新时间,它们无法修改和删除,数据由系统写入。其中 id 是每行数据的唯一标识符,是独一无二的“身份证”,不会重复也不会变化。它被用于定位某条数据,也被用于建立表之间的关联。
添加列时,需确认的属性:
列名:不能用“column”等词
类型:支持文本、整数、图片等常用类型。Zion 有严格的类型校验系统,例如“日期”、“时间”、“日期时间”虽然都是时间相关的类型,但是它们之间不能混用;而数据表作为项目的基石,会影响UI、行为等部分,因此需要仔细确定类型
必须:表示添加或修改数据时,是否可以为空。一般关闭。
唯一:表示这列数据是否能够重复,例如:账户表的用户名是不可重复的
对所有角色开放权限:权限管理,,打开后所有角色都有该列的增删改查权限。详情查看:权限管理
在 blog_article 表中,添加标题(文本)、内容(文本)、封面(图片)和发布时间(日期时间)用于保存博客标题、内容、封面和发布时间
3. 添加关联
表和表之间可以通过 id 建立管理。如下图所示,账户表对 博客文章表建立关联后,博客文章表中增加了一个新列用于保存账户表的 id。从表中的数据可以看出,两篇博客都属于“张三”。
建立关联时,主要考虑两方面内容:
- 关联方向
即谁对谁建立关联,在上面的例子中,是 account 对 blog_article 建立了关联。
关联类型
一对多:指 A 表中的一条数据可以和 B 表中的多条数据关联
一对一:指 A 表中的一条数据只能和 B 表中的一条数据关联
下图例子中,一个用户可以拥有多篇博客(一对多),但只能有一个钱包(一对一)。
在 Zion 中建关联时,要在起始表中添加关联(本例中的账户表),然后确定以下属性:
目标表:要关联的表(本例中的博客文章)
关系类型:一对一或一对多
关系名称(目标表中):在关联表中新建列的名称(本例中的“用户”)
关系名称(当前表中):在起始表中新建列的名称(本例中的“博客”)
对所有角色开放权限:表权限管理,打开后所有角色都有该表的增删改查权限。详情查看:权限管理
4. 约束设置
当前支持“唯一约束”,可以指定某些列的数据不可重复。
如前文所述,id 是不能重复的,因此每张表都会有一个默认的 id 的唯一约束。
开发者可以添加自己的约束,添加时需确定:
约束名称:不可重复,不允许使用中文和大写字母
列的集合:可以选一列或多列。选择一列时,表示这列中的数据不可重复;选择多列时,表示这些列数据的组合不可重复。若想删除约束,需要把列集合中的某一列删除。
在下图,建立了一个“标题”和“用户”组合唯一的约束,表示同一个用户不能使用重复的标题。
5. 向量化存储和排序
向量化存储指将某一列的数据通过大模型进行向量化,并将向量化结果存储在数据库(开发者不可见)中的操作。
完成向量化后,就可以实现向量化排序。普通排序只能根据单一的、明确的规则进行排序,例如数值大小、字母顺序等。它无法处理“有多相似”、“有多相关”这类模糊的概念。而向量排序则通过将对象转换为向量,并计算向量间的距离,从而实现基于相似度的排序。
例如,可以将“博客文章”表中的“内容”列进行向量化,就可以实现“文章推荐”的功能:
让用户输入想看的文章内容
计算用户的输入和博客文章的向量距离,按照距离从小到大排序
取距离最近的几篇文章
Zion 目前仅支持文本类型的向量化存储:
在配置了向量化存储后,就可以在获取数据时,配置向量化排序:
Zion 提供的向量距离的计算方式有两种: COSINE(余弦距离)与 EUCLIDEAN(欧式距离)
EUCLIDEAN 适用于需要衡量绝对差异的场景,关注点在于数值大小和具体的物理距离。例如:导航系统、物流配送路径优化;比较不同时间段的生理参数(如心率、血压)变化。
COSINE 适用于需要衡量方向相似性的场景,关注点在于相对关系和方向一致性。例如:搜索引擎、文本分类、推荐系统。## 在列表组件中进行向量化排序
6. 将修改同步至线上
表和字段的所有修改,在更新后端后都会同步至线上。如果你的项目已发布并投入使用,表的修改可能会导致线上的某些请求失败。
权限管理
数据是项目最重要的资产,权限设置可以规定不同用户对数据的访问权限,防止未经授权的访问和数据泄露,从而保护数据资产。
Zion提供了一套结合角色(RBAC)和属性(ABAC)权限管理系统。在保障数据安全的同时,还能够实现灵活、精准地进行权限控制。详细请查看:权限管理
数据使用
在完成上述操作后,即可将数据表作为其他部分的数据源使用:
数据的导入
1. 点击编辑器左上角的数据模型进入数据库,点击导入按钮
2. 选择导入的数据源
- 仅支持编码格式为utf-8的Excel文件(xls、xlsx结尾的文件),否则会出现乱码/上传失败。建议使用office较新版本的Excel来打开制作需要导入的内容,不能使用WPS。
- Zion 默认 Excel 表格的第一行为表头
- Excel 表格中除了必要的数据列有数据之外,其他空格内不能写入数据或者有空格,也不能在同一个Excel表中有多个工作表(如sheet1、sheet2)
- 确保上传的数据表中至少需要有一个数据记录,如果没有数据会报格式错误。
3.设置表映射
将 Excel 文件与在 Zion 中创建的数据表进行关联
4.设置字段映射
将 Excel 文件表头与你想对应数据表的字段一一建立映射,如果是不想上传数据的字段以及默认的创建时间和更新时间,选择 【空值】 即可。
5.设置关系映射
单张无关联的数据表,选择忽略即可。
6.上传图片、视频、文件
如无媒体文件需要上传,可以直接跳过这个步骤,如需上传媒体文件,建议学习【B站导入视频】
- 导入图片时,需要将图片文件保存在命名为 image 的文件夹中,并且将该文件夹压缩成 image.zip 压缩包
- 导入视频时,需要将视频文件保存在命名为 video 的文件夹中,并且将该文件夹压缩成 video.zip 压缩包
- 导入excel、doc、pdf以及音频等文件时,需要将这些文件保存在命名为 file 的文件夹中,并且将该文件夹压缩成 file.zip 压缩包
目前只支持导入单一媒体文件,例如在批量导入图片时,不能同时批量导入视频文件,如果需要导入的数据中包含图片、视频,建议将图片与视频分开保存在不同的数据表中,并将其建立关系后分别导入。
7.预览
最后步骤会预览显示上传后的数据样式
再次提示:如果你这里看到的是乱码,说明你的文件编码格式不对,需要转成utf-8编码格式:https://blog.csdn.net/wzw2887/article/details/112391805
导入按钮如果是灰色的说明你的导入文件正在上传,稍等一下就好了
8.完成导入
切换数据表之后,最新的数据将会呈现在数据表中
9.常见导入失败的自查方法
在 Zion 中进行数据导入操作时,遇到导入失败提示,是因为你的导入内容不符合系统的识别格式。
- 在浏览器中我们打开控制台,方法如下:
- mac电脑 : 「option+command+j」 或者 「option+command+c」或者 「option+command+i」
- windows电脑 「F12」(大部分都可以)
- 查看console,提示导入失败时,失败原因会被抛到这里
操作一次导入,导入失败时可以看到console里有报错信息
这是上传的 Excel 文件内容
查看linenumber:linenumber对应的不是直接的数据行数,而是数据行数+2,原因是系统索引是从0开始的,而表格索引是从1开始的;还有一点表格中第一行是表头,因此差出了两行。
常见的报错类型有:
报错类型1: MISMATCHED_DATA_TYPE
这个报错的意思是数据类型不匹配,我们在价格字段中传了一个文本类型的“三百块”,而数据模型中价格字段的数据类型是无限精度小数。
报错类型2: NO_MATCHING_MEDIA
这个报错的意思是未找到对应的媒体文件,当Excel文件中的文件名,与媒体文件名完全对应时,才能成功上传。文件夹名要严格按照要求,图片 - image,视频 - video,其他 - file。
- 文件夹名严格一致:例如图片文件夹,用images命名无效,反例见上图第11行
- 文件名和Excel文件中内容严格一致,如果文件名有后缀Excel文件中也要带,反例见上图第9行
- Excel文件中如果有空的数据列,也会导致出现上述错误,所以需要将空的列删除
- 假设保存图片的文件夹名称为“图片”,将其压缩后,压缩包的名称为“图片.zip”,仅将“图片.zip”修改为“image.zip”也会导致找不到媒体文件,应当将“图片”文件夹的名称修改为“image”后再压缩
- 假设Excel文件中的图片数据名称为“image/封面图1.png”,但实际在压缩包中的封面图1的名称为“封面图”或者这样图片的类型是“jpg”,那么Excel文件中的图片数据名称应该修改为“image/封面图.png”或“image/封面图1.jpg”### 报错类型3: INTERNAL_ERROR
在该例子中,出现错误的原因是:Windows使用了自带的压缩软件对图片/视频等素材文件进行了压缩,压缩时素材的编码格式不为Utf-8,导致 Zion 无法识别素材文件内容。为了避免该错误,一般建议使用“Bnadizip”这款压缩软件,压缩文件时的压缩配置如下
报错类型3 :unique_constraint_violation** 导入的数据中有违反约束限制的数据,如果你的表中存在一对一关系或其他手动设置的约束,需检查存在约束的字段导入内容是唯一且本不存在于后台中的。