Zion 数据模型与数据库
Zion 提供功能强大的关系型数据库,支持灵活构建结构化数据模型,实现高效的数据管理与安全控制。
快速入门
打开编辑器左上角的“数据”菜单:
- 数据模型:表的管理,包括建表、字段、关联等操作
- 数据库:数据的管理
数据表管理
表是数据模型的核心,用于存储结构化数据。Zion 支持便捷的表管理。
创建数据表
点击“添加”,设置表属性:
- 表名:避免使用“log”、“column”、“index”等保留字
- 描述:表的说明(可选)
- 对所有角色开放权限:控制表的增删改查权限,详见权限管理
示例:创建“博客文章”表
添加字段
每张表默认包含 id、创建时间、更新时间三列(系统自动维护,不可修改/删除)。
添加字段时需设置:
- 列名:避免使用“column”等保留字
- 类型:支持文本、整数、图片等,类型需严格匹配业务需求
- 必须:是否为必填项
- 唯一:是否唯一(如用户名)
- 对所有角色开放权限:控制字段权限,详见权限管理
示例:在 blog_article 表中添加标题、内容、封面、发布时间
添加表关联
表间可通过 id 建立关联。例如,账户表与博客文章表建立关联后,博客文章表会新增一列用于保存账户 id。
关联需明确:
- 关联方向:谁对谁建立关联
- 关联类型:一对多/一对一
一对多:指 A 表中的一行数据可以与 B 表中多行数据关联。例:一个用户可拥有多篇博客 一对一:指 A 表中的一行数据可以与 B 表中 1 行数据关联。一个用户仅有一个钱包
配置关联时需设置:
- 目标表
- 关系类型
- **关系名称(目标表/当前表):**在对应表中的字段名称
- **对所有角色开放权限:**权限管理,打开后所有角色都有该字段的编辑权限
约束设置
支持“唯一约束”,可指定某些字段或字段组合不可重复。
每张表默认 id 唯一。
添加自定义约束时需设置:
- 约束名称:不可重复,禁止中文和大写字母
- 列集合:可单列或多列,组合唯一
示例:同一用户不能有重复标题
向量化存储与排序
向量化存储将文本字段通过大模型转为向量,实现基于相似度的排序(如智能推荐)。详情见向量化存储.
示例:对“内容”字段向量化,实现文章推荐
- 用户输入感兴趣内容
- 计算输入与文章内容的向量距离,按距离排序
- 取最相关的若干篇文章
仅支持文本类型向量化。
配置后可在数据获取时启用向量化排序。
支持两种距离算法:
- EUCLIDEAN(欧氏距离):适合绝对差异场景,如物流路径优化
- COSINE(余弦距离):适合方向相似性场景,如文本推荐
数据表修改与同步
所有表和字段的修改,更新后端后会同步至线上。注意:项目已发布后,表结构变更可能导致线上请求失败。
权限管理
数据是项目核心资产。Zion 结合 RBAC(基于角色)与 ABAC(基于属性)权限系统,保障数据安全并实现灵活控制。详见权限管理.
数据使用
数据使用包括数据的增加、删除、更新和查询。在做任何操作时,都需要做以下配置:
条件:筛选的条件,最终满足条件的筛选会生效。
过滤:指从数据库中提取数据时,获取满足过滤条件的数据。过滤条件支持两种模式:
-
数据表字段与某个值的比较。在上文的例子中,如果想要获取点赞数超过100的博客文章,就可以设置条件:
like_count > 100
。 -
数据表字段与字段的比较。例如,想要获取点赞大于被踩数的文章,就可以设置条件:
like_count > dislike_count
。
排序:选择根据某个字段进行排序。如果该字段开启了向量存储,能够进行向量排序(详细查看:数据库)
去重:去除重复数据,可选择多个去重字段
详细用法请参阅:数据处理
数据导入指南
进入数据导入界面
点击编辑器左上角“数据模型”,进入数据库后点击“导入”按钮。
选择文件
- 仅支持 UTF-8 编码的 Excel 文件(xls、xlsx)
- 第一行为表头,不能有多工作表
- 空白单元格不能有数据或空格
- 至少有一条数据记录
设置表映射
将 Excel 文件与 Zion 数据表关联。
字段映射
将 Excel 表头与数据表字段一一对应。不导入的字段选择“空值”。
关系映射
无关联表可忽略。
上传图片、视频、文件
如需上传媒体文件,建议分别导入并建立关联。
- 图片:image 文件夹,压缩为 image.zip
- 视频:video 文件夹,压缩为 video.zip
- 其他文件:file 文件夹,压缩为 file.zip
仅支持单一类型批量导入,图片与视频请分表导入并建立关联。
预览与完成导入
- 预览上传数据样式,若乱码请检查编码格式为 UTF-8
- 导入按钮灰色为上传中,稍等即可
切换数据表后,最新数据将展示。
常见导入失败排查
- 打开浏览器控制台查看失败原因
- macOS:⌥ ⌘ j/c/i
- Windows:F12
- 常见报错类型:
MISMATCHED_DATA_TYPE
:数据类型不匹配NO_MATCHING_MEDIA
:未找到对应媒体文件,需严格匹配文件夹/文件名INTERNAL_ERROR
:压缩包编码不为 UTF-8,建议用 Bandizip 压缩unique_constraint_violation
:违反唯一约束