数据库表设计
在 FormCreate 环境中管理表单时,一个合理的数据库设计至关重要,以便存储表单设计的规则以及用户提交的数据。下述内容详细阐述了几种核心数据库表设计,帮助您更有效地组织和管理数据。
1. 表单表 (forms)
此表用于存储每个表单的整体信息,包括名称、描述以及设计的规则等:
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | INT | 主键ID,自增 |
| title | VARCHAR | 表单名称,用于标识表单的唯一标识 |
| description | TEXT | 表单的描述信息 |
| rules | JSON | 表单的规则和字段的整体配置数据,通常包含多个字段的配置 |
| options | JSON | 表单的配置数据(例如:布局、尺寸、全局数据等) |
| created_at | DATETIME | 表单创建时间 |
| updated_at | DATETIME | 表单更新时间 |
sql
CREATE TABLE forms (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID,自增',
title VARCHAR(64) NOT NULL UNIQUE COMMENT '表单名称,用于标识表单的唯一标识',
description TEXT COMMENT '表单的描述信息',
rules JSON COMMENT '表单的规则和字段的整体配置数据,通常包含多个字段的配置',
options JSON COMMENT '表单的配置数据(例如:布局、尺寸、全局数据等)',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '表单创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '表单更新时间'
) COMMENT='表单信息表';示例代码:
表单组件的插入数据对象,包含标题、描述、表单配置等关键信息,用于将表单设计数据序列化并存储到后端数据库。
ts
//rules 是表单的组件设计规则
//options 是表单配置
const insert = {
title: options.formName || '',
description: options.description || '',
rules: JSON.stringify(rules),
options: JSON.stringify(options),
}2. 字段数据表 (form_data)
此表用于存储用户提交的每个字段的具体值。每次表单提交都会产生一条新的纪录,用于追踪表单的历史记录。
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | INT | 主键ID,自增 |
| form_id | INT | 表单ID,外键关联至 forms 表 |
| field_name | VARCHAR | 字段名称 |
| field_value | JSON | 用户提交的字段值 |
| created_at | DATETIME | 数据创建时间 |
| updated_at | DATETIME | 表单更新时间 |
sql
CREATE TABLE form_data (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID,自增',
form_id INT NOT NULL COMMENT '表单ID',
field VARCHAR(32) NOT NULL COMMENT '字段名称,指向 fields 表中的 field',
value JSON COMMENT '用户提交的字段值',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '表单更新时间'
) COMMENT='用户提交的表单字段数据表';示例代码:
将表单提交的数据转换为可插入数据库的结构,通过遍历表单数据的每个字段,生成包含字段ID、字段名和序列化值的对象数组,便于批量存储表单提交记录。
ts
//formData 是表单提交的数据
const inserts = Object.keys(formData).map(field => {
return {
field: field,
value: JSON.stringify(formData[field]),
};
})通过上述数据库表结构示例,您可以为基于 FormCreate 的应用搭建一个良好的数据存储基础,方便存储和管理表单设计与用户数据。


