Files

67 lines
4.1 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================================
-- 问卷应用 question-center R1 建表脚本(库:ysch_question)
-- 表:questionnaire / pull_cursor / answer_projection
-- 与实体(ddl-auto=update 开发期自动建表)保持同构;生产用本脚本 + ddl-auto=none
-- =====================================================================
CREATE DATABASE IF NOT EXISTS ysch_question DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE ysch_question;
-- ---------------------------------------------------------------------
-- 问卷主表:一份问卷 = 一个 FC 表单(1:1)
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `questionnaire` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sch_id` BIGINT NOT NULL COMMENT '学校域',
`form_uuid` VARCHAR(40) NOT NULL COMMENT 'FC form.uuid(uk 兜底防重复绑定)',
`form_code` VARCHAR(64) NULL COMMENT 'FC form.code:填写链接 #/f/{code} 入口',
`title_snapshot` VARCHAR(128) NULL COMMENT 'FC form.name 快照(以 FC 为准可刷新)',
`form_version` INT NULL COMMENT '发布核验时钉版的版本号;NULL=从未发布',
`status` INT NOT NULL DEFAULT 0 COMMENT '0=草稿 1=收集中 2=已结束(问卷投放态)',
`description` LONGTEXT NULL COMMENT 'JSON:{description,cover,thanks}',
`anonymous` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '受众含 ANONYMOUS',
`schema_snapshot` LONGTEXT NULL COMMENT '发布时钉版的 FC schema 快照(统计渲染用)',
`publish_time` DATETIME NULL,
`finish_time` DATETIME NULL,
`create_by` VARCHAR(64) NULL,
`create_time` DATETIME NULL,
`update_by` VARCHAR(64) NULL,
`update_time` DATETIME NULL,
`is_deleted` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_questionnaire_form_uuid` (`form_uuid`),
KEY `idx_questionnaire_sch_status` (`sch_id`, `status`, `is_deleted`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '问卷主表';
-- ---------------------------------------------------------------------
-- 投影拉取游标:每表单一行(冻结表单 append-only answer_uuid 游标)
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `pull_cursor` (
`form_uuid` VARCHAR(40) NOT NULL COMMENT 'FC form.uuid',
`cursor` VARCHAR(40) NULL COMMENT '已拉到的最后一条 answer_uuid(FC nextCursor)',
`seen_count` BIGINT NOT NULL DEFAULT 0 COMMENT '对账:累计首见行数(含墓碑)',
`last_pull_at` DATETIME NULL,
`last_status` VARCHAR(255) NULL COMMENT 'OK / FAILED:原因',
PRIMARY KEY (`form_uuid`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '答卷投影拉取游标';
-- ---------------------------------------------------------------------
-- 答卷投影行:uk answer_uuid 幂等 upsert;墓碑翻 is_deleted 不删行
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `answer_projection` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`answer_uuid` VARCHAR(40) NOT NULL COMMENT 'FC answer_uuid(uk)',
`form_uuid` VARCHAR(40) NOT NULL,
`values_json` LONGTEXT NOT NULL COMMENT 'FC 行 values 原文 JSON(不解析不校验)',
`submitter_id` INT NULL COMMENT 'FC userId;0=匿名行',
`subject_id` INT NULL COMMENT '被代填人;自填=本人、匿名=NULL',
`status` VARCHAR(32) NULL COMMENT 'FC 答卷状态',
`is_deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1=FC 侧墓碑(软删)',
`fc_create_time` VARCHAR(32) NULL COMMENT 'FC 行 create_time 原文',
`fc_update_time` VARCHAR(32) NULL,
`pulled_at` DATETIME NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_answer_projection_uuid` (`answer_uuid`),
KEY `idx_answer_projection_form` (`form_uuid`, `is_deleted`, `fc_create_time`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '答卷投影行';