Files
his/迁移记录-DB变更记录/20250902前变更记录/202509011722 doc_template.sql

107 lines
6.8 KiB
SQL
Raw 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.

-- 1. 创建文档模板表主键序列自增ID
CREATE SEQUENCE doc_template_id_seq
START WITH 1 -- 起始值为1
INCREMENT BY 1 -- 每次递增1
NO MINVALUE -- 无最小值限制
NO MAXVALUE -- 无最大值限制
CACHE 1; -- 缓存1个序列值提升性能
-- 2. 创建文档模板表doc_template
CREATE TABLE "doc_template" (
-- 主键字段
"id" int8 NOT NULL DEFAULT nextval('doc_template_id_seq'::regclass), -- 主键ID关联序列自增
-- 业务核心字段与实体类DocTemplate对应
"name" varchar(100) COLLATE "pg_catalog"."default" NOT NULL, -- 模板名称非空建议100字符内
"display_order" int4 DEFAULT 0, -- 排序号默认0值越小越靠前
"context_json" text COLLATE "pg_catalog"."default" NOT NULL, -- 模板内容JSON格式非空存储模板结构
"definition_id" int8 NOT NULL, -- 文书定义ID非空关联doc_definition表主键
"use_range" int4 NOT NULL DEFAULT 0, -- 使用范围非空0-暂不使用/1-全院/2-指定科室/3-个人)
"organization_id" int8, -- 指定科室IDuse_range=2时有效关联科室表
"user_id" int8, -- 指定用户IDuse_range=3时有效关联用户表
"remark" varchar(500) COLLATE "pg_catalog"."default", -- 备注500字符内存储使用说明
-- 继承HisBaseEntity的审计字段通用字段无需实体类显式定义
"tenant_id" int8 NOT NULL, -- 租户ID非空多租户隔离
"delete_flag" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '0', -- 删除标志非空0-未删除/1-已删除)
"create_by" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '', -- 创建人(非空,存储用户名)
"create_time" timestamptz(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间(非空,默认当前时间,带时区)
"update_by" varchar(32) COLLATE "pg_catalog"."default", -- 更新人(存储用户名)
"update_time" timestamptz(6), -- 更新时间(带时区)
-- 主键约束
CONSTRAINT "doc_template_pkey" PRIMARY KEY ("id")
-- 外键约束(关联文书定义表,确保数据一致性)
-- CONSTRAINT "fk_doc_template_definition" FOREIGN KEY ("definition_id")
-- REFERENCES "doc_definition" ("id") ON DELETE RESTRICT, -- 文书定义删除时,限制删除(避免模板关联失效)
--
-- -- 外键约束关联科室表use_range=2时生效
-- CONSTRAINT "fk_doc_template_organization" FOREIGN KEY ("organization_id")
-- REFERENCES "sys_organization" ("id") ON DELETE SET NULL, -- 科室删除时,置空该字段
--
-- -- 外键约束关联用户表use_range=3时生效
-- CONSTRAINT "fk_doc_template_user" FOREIGN KEY ("user_id")
-- REFERENCES "sys_user" ("id") ON DELETE SET NULL, -- 用户删除时,置空该字段
--
-- -- 唯一约束(模板名称+文书定义ID唯一避免同文书下重复模板
-- CONSTRAINT "uk_doc_template_name_defid" UNIQUE ("name", "definition_id")
);
-- 3. 设置表所有者与项目数据库用户一致通常为postgres
ALTER TABLE "doc_template" OWNER TO "postgres";
-- 4. 表及字段注释(便于维护,与实体类注释对应)
COMMENT ON TABLE "doc_template" IS '文档模板表:存储各类文书的模板信息,支持全院、科室、个人等不同使用范围';
COMMENT ON COLUMN "doc_template"."id" IS '主键ID';
COMMENT ON COLUMN "doc_template"."name" IS '模板名称:唯一标识模板,同文书定义下不可重复';
COMMENT ON COLUMN "doc_template"."display_order" IS '排序号模板列表展示顺序值越小越靠前默认0';
COMMENT ON COLUMN "doc_template"."context_json" IS '模板内容JSON格式存储模板结构、字段配置等信息前端据此渲染模板';
COMMENT ON COLUMN "doc_template"."definition_id" IS '文书定义ID关联doc_definition表标识模板所属的文书类型';
COMMENT ON COLUMN "doc_template"."use_range" IS '使用范围0-暂不使用1-全院使用2-指定科室使用3-个人使用';
COMMENT ON COLUMN "doc_template"."organization_id" IS '指定科室IDuse_range=2时有效关联sys_organization表';
COMMENT ON COLUMN "doc_template"."user_id" IS '指定用户IDuse_range=3时有效关联sys_user表';
COMMENT ON COLUMN "doc_template"."remark" IS '备注:存储模板使用场景、注意事项等额外说明';
COMMENT ON COLUMN "doc_template"."tenant_id" IS '租户ID多租户系统隔离字段非空';
COMMENT ON COLUMN "doc_template"."delete_flag" IS '删除标志0-未删除1-已删除默认0';
COMMENT ON COLUMN "doc_template"."create_by" IS '创建人:存储创建者用户名,非空';
COMMENT ON COLUMN "doc_template"."create_time" IS '创建时间:默认当前时间,带时区,非空';
COMMENT ON COLUMN "doc_template"."update_by" IS '更新人:存储更新者用户名';
COMMENT ON COLUMN "doc_template"."update_time" IS '更新时间:带时区';
-- -- 5. 索引设计(优化高频查询场景,提升性能)
-- -- 1按文书定义ID查询高频查询某类文书的所有模板
-- CREATE INDEX "idx_doc_template_definition"
-- ON "doc_template" ("definition_id")
-- WHERE "delete_flag" = '0'; -- 只索引未删除数据,减少索引体积
--
-- -- 2按使用范围+科室ID查询高频科室用户查询本科室模板
-- CREATE INDEX "idx_doc_template_userange_org"
-- ON "doc_template" ("use_range", "organization_id")
-- WHERE "delete_flag" = '0';
--
-- -- 3按使用范围+用户ID查询高频个人用户查询自己的模板
-- CREATE INDEX "idx_doc_template_userange_user"
-- ON "doc_template" ("use_range", "user_id")
-- WHERE "delete_flag" = '0';
--
-- -- 4按模板名称模糊查询高频搜索模板
-- CREATE INDEX "idx_doc_template_name"
-- ON "doc_template" ("name")
-- WHERE "delete_flag" = '0';
--
-- -- 5按租户ID+创建时间查询(高频:多租户下按时间筛选模板)
-- CREATE INDEX "idx_doc_template_tenant_createtime"
-- ON "doc_template" ("tenant_id", "create_time")
-- WHERE "delete_flag" = '0';
-- 向迁移历史表插入记录
INSERT INTO __MigrationsHistory (MigrationId, ProductVersion)
VALUES ('202509011722 doc_template', '1.0.0');