Skip to content

数据库表设计

在 FormCreate 环境中管理表单时,一个合理的数据库设计至关重要,以便存储表单设计的规则以及用户提交的数据。下述内容详细阐述了几种核心数据库表设计,帮助您更有效地组织和管理数据。

1. 表单表 (forms)

此表用于存储每个表单的整体信息,包括名称、描述以及设计的规则等:

字段名数据类型描述
idINT主键ID,自增
titleVARCHAR表单名称,用于标识表单的唯一标识
descriptionTEXT表单的描述信息
rulesJSON表单的规则和字段的整体配置数据,通常包含多个字段的配置
optionsJSON表单的配置数据(例如:布局、尺寸、全局数据等)
created_atDATETIME表单创建时间
updated_atDATETIME表单更新时间
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)

此表用于存储用户提交的每个字段的具体值。每次表单提交都会产生一条新的纪录,用于追踪表单的历史记录。

字段名数据类型描述
idINT主键ID,自增
form_idINT表单ID,外键关联至 forms
field_nameVARCHAR字段名称
field_valueJSON用户提交的字段值
created_atDATETIME数据创建时间
updated_atDATETIME表单更新时间
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 的应用搭建一个良好的数据存储基础,方便存储和管理表单设计与用户数据。