Appearance
数据源-默认数据源
概述
数据将会存储在数据库中。织信会创建一张数据库表来存储数据,如果数据表中有关联列表
类型的字段,系统还会额外为每一个字段创建一张邻接表
来存储关联关系。
数据表的存储
数据表的数据源
类型为默认
时,系统会为数据表创建一张真实的物理表,并且会自动创建以下两个字段
字段 | 类型 | 说明 |
---|---|---|
id | varchar(32) | 系统生成的唯一ID,主键 |
seq | int(8) | 数据添加的先后顺序 |
注意事项
- 物理表名称会基于
z_{应用ID}_{数据表ID}
规则自动生成,其中appId和tableId是系统生成的12位的唯一ID - 物理表中的列ID也由系统自动生成,列数据类型会依据
数据表字段
类型动态设置
数据表结构示例
数据表视图
通过对物理表创建过程的了解,我们可以发现物理表生成的内容是不可读;为了提高可读性,在物理表创建完成后,平台会基于物理表创建该表的可读性 视图( view) 。
注意
- 视图名称会基于
v_{应用ID}_{模块表示符}
规则自动生成,其中模块标识符会按照蛇形命名法(Snake case)进行转换。例如模块标识符为demoTable
则得到的视图名称为v_{应用ID}_demo_table
- 视图的列ID也会按照蛇形命名法(Snake case)进行转换
视图结构示例
字段存储
对于每一种字段类型,织信会采用不同的格式建立数据表的列。列的id是系统生成的12位的唯一ID
类型 | 数据库类型 | 说明 |
---|---|---|
单行文本 | varchar(200) | 默认最大支持200个字符,可自行调整 |
多行文本 | varchar(1000) | 默认最大支持1000个字符,可自行调整 |
富文本 | text | |
整数 | int8 | |
小数 | float8 | 存储小数 |
日期 | timestamp(6) | 存储日期 |
时间 | varchar(32) | 存储时间 |
评分 | int4 | 评分组件 |
列表选择 | varchar(200) | 列表选择组件允许用户从列表中选择一个或多个值 |
树形选择 | 树形选择 | 树状结构选择允许用户从树形结构中选择一个或多个值 |
级联选择 | jsonb | 级联选择控件允许用户从级联结构中选择一个或多个值 |
附件 | jsonb | 附件允许上传图片、文档等格式的文件。这些文件可以在线预览或者下载 |
复选或开关 | bool | 复选框 |
用户选择 | jsonb | 应用成员字段允许添加一个或多个应用成员 |
部门选择 | jsonb | 部门字段允许选择一个或多个部门 |
颜色 | varchar(32) | 颜色选择器 |
手写签名 | jsonb | 允许用户手写签名,保留字迹 |
地理位置坐标 | jsonb | 地理位置坐标 |
函数 | 利用函数和其它字段的值计算出一个结果 | |
自定义组件 | 使用网站模块页面自定义显示控件 | |
关联列表 | 关联另外一张表的多条记录 | |
关联记录 | varchar(64) | 关联另外一张表的一条记录,存储的是依赖表的记录ID |
关联记录字段 | 关联另外一张表的特定字段 | |
查找列表 | 根据过滤条件查找关联到本表的记录列表 | |
子对象 | ltree | 使用子对象可以使数据表拥有树状结构 |
关联列表汇总 | float8 | 计算【关联列表】中特定字段的汇总数据 |
查找汇总 | float8 | 根据过滤条件查找关联到关联列表,并根据关联列表的特定字段汇总数据 |
编号 | varchar(128) | 由系统生成的编号 |
子对象编号 | text | 树形结构的完整路径 |
创建时间 | timestamp(6) | 自动记录数据的创建时间 |
最后修改时间 | timestamp(6) | 自动记录数据的最后修改时间 |
创建人 | varchar(128) | 自动记录数据的创建人 |
最后修改人 | varchar(128) | 自动记录数据的后修改人 |
静态文本 | 使用富文本编辑静态展示的文本,文本内容可以使用表达式动态设置 |
注意事项
数据库类型
未标注的字段表示该字段在当前数据表模型中不会存在对应的映射列
单选和多选
在字段选项值有多选的情况时,数据会存储为数组类型,例如用户选择
字段单选时存储的是 TableUser
类型,在多选时存储的是Array<TableUser>
数组。在通过自动化或者脚本查询和更新数据时要注意这一点。
子对象
子对象数据库存储格式是字符串,存储的是父对象ID列表,中间通过.
分隔 例如数据表 department 的结构如下
字段 | 类型 | 说明 |
---|---|---|
id | String | 记录ID |
name | 单行文本 | 名称 |
parent | 子对象 | 部门之间的父子关系 |
表中的数据如下
id | name | parent |
---|---|---|
0000 | 总公司 | |
0001 | 技术部 | 0000 |
0002 | 产品部 | 0000 |
0003 | 运营部 | 0000 |
0004 | 技术一组 | 0000.0001 |
0005 | 技术二组 | 0000.0001 |
关联记录字段
关联记录字段
在数据表中不会存储,在运行时会动态的根据关联关系从目标表中获取数据。关联记录字段
总是只读状态,不能编辑。
关联列表
关联列表表示的是模型之间的一对多关系。对于每一个关联记录字段,系统会创建一张邻接表
存储,邻接表的名称为z_appId_tableId_fieldId
。其中appId是应用id,tableId是主表内部id,fieldId是字段的内部id。
邻接表的结构如下
字段 | 类型 | 说明 |
---|---|---|
id | int | 主表记录ID |
relation_id | varchar | 子表记录ID |
index | int | 排序 |
create_time | date | 创建时间 |
关联列表字段删除后系统会将邻接表
删除。
查找列表
查找列表
不会存储,在运行时会根据配置的过滤条件动态查询。