当前位置: 首页 > news >正文

smart-water表设计方案

-- =================================================================
-- 2. SOP 管理模块
-- =================================================================-- 2.1 SOP主表 (存储SOP元数据,与版本分离)
CREATE TABLE sops (id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),name VARCHAR(255) NOT NULL,description TEXT,latest_published_version_id UUID, -- 外键约束在版本表创建后添加created_by UUID NOT NULL REFERENCES users(id),created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),updated_by UUID NOT NULL REFERENCES users(id),updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
COMMENT ON TABLE sops IS 'SOP主信息表,存储SOP的基本信息,与版本表分离便于版本管理';
COMMENT ON COLUMN sops.id IS 'SOP主记录唯一标识(GUID)';
COMMENT ON COLUMN sops.name IS 'SOP名称,如"车间设备每日巡检流程"';
COMMENT ON COLUMN sops.latest_published_version_id IS '指向最新发布的SOP版本,快速获取有效版本';
COMMENT ON COLUMN sops.created_by IS '创建者ID,外键引用users表';-- 2.2 SOP版本表 (存储SOP的具体版本定义)
CREATE TABLE sop_versions (id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),sop_id UUID NOT NULL REFERENCES sops(id) ON DELETE CASCADE,version_string VARCHAR(50) NOT NULL,status VARCHAR(20) NOT NULL CHECK (status IN ('Draft', 'Published', 'Archived')),definition JSONB NOT NULL,created_by UUID NOT NULL REFERENCES users(id),created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),published_at TIMESTAMPTZ,UNIQUE (sop_id, version_string)
);
COMMENT ON TABLE sop_versions IS 'SOP版本表,存储SOP的具体版本定义,支持版本追溯与迭代';
COMMENT ON COLUMN sop_versions.sop_id IS '关联的SOP主记录ID,外键引用sops表';
COMMENT ON COLUMN sop_versions.version_string IS '版本号,如"V1.0"、"V2.1-Draft",同一SOP内唯一';
COMMENT ON COLUMN sop_versions.status IS '版本状态:Draft(草稿)、Published(已发布)、Archived(已归档)';
COMMENT ON COLUMN sop_versions.definition IS 'SOP流程定义(JSONB),包含节点、连线及配置信息';
COMMENT ON COLUMN sop_versions.published_at IS '版本发布时间,仅当状态为Published或Archived时有效';-- 关联SOP主表与最新版本,并设置为可延迟,以解决循环依赖问题
ALTER TABLE sopsADD CONSTRAINT fk_sops_latest_versionFOREIGN KEY (latest_published_version_id)REFERENCES sop_versions(id)ON DELETE SET NULL -- 如果版本被删除,仅将此链接置空DEFERRABLE INITIALLY DEFERRED;
COMMENT ON CONSTRAINT fk_sops_latest_version ON sops IS 'SOP主表与最新版本的外键关联。可延迟以方便在同一事务中创建SOP及其首个版本。';

user表 

create table sys_user
(user_id     bigint      not nullconstraint sys_user_pkprimary key,tenant_id   varchar(20)  default '000000'::character varying,dept_id     bigint,user_name   varchar(30) not null,nick_name   varchar(30) not null,user_type   varchar(10)  default 'sys_user'::character varying,email       varchar(50)  default ''::character varying,phonenumber varchar(11)  default ''::character varying,sex         char         default '0'::bpchar,avatar      bigint,password    varchar(100) default ''::character varying,status      char         default '0'::bpchar,del_flag    char         default '0'::bpchar,login_ip    varchar(128) default ''::character varying,login_date  timestamp,create_dept bigint,create_by   bigint,create_time timestamp,update_by   bigint,update_time timestamp,remark      varchar(500) default NULL::character varying
);comment on table sys_user is '用户信息表';comment on column sys_user.user_id is '用户ID';comment on column sys_user.tenant_id is '租户编号';comment on column sys_user.dept_id is '部门ID';comment on column sys_user.user_name is '用户账号';comment on column sys_user.nick_name is '用户昵称';comment on column sys_user.user_type is '用户类型(sys_user系统用户)';comment on column sys_user.email is '用户邮箱';comment on column sys_user.phonenumber is '手机号码';comment on column sys_user.sex is '用户性别(0男 1女 2未知)';comment on column sys_user.avatar is '头像地址';comment on column sys_user.password is '密码';comment on column sys_user.status is '帐号状态(0正常 1停用)';comment on column sys_user.del_flag is '删除标志(0代表存在 1代表删除)';comment on column sys_user.login_ip is '最后登陆IP';comment on column sys_user.login_date is '最后登陆时间';comment on column sys_user.create_dept is '创建部门';comment on column sys_user.create_by is '创建者';comment on column sys_user.create_time is '创建时间';comment on column sys_user.update_by is '更新者';comment on column sys_user.update_time is '更新时间';comment on column sys_user.remark is '备注';alter table sys_userowner to postgres;

SOP管理模块

总和

-- 2.1 SOP主表 (存储SOP元数据,与版本分离)
CREATE TABLE sops (id BIGINT PRIMARY KEY,name VARCHAR(255) NOT NULL,description TEXT,latest_published_version_id BIGINT,created_by BIGINT NOT NULL REFERENCES sys_user(user_id),created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),updated_by BIGINT NOT NULL REFERENCES sys_user(user_id),updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
COMMENT ON TABLE sops IS 'SOP主信息表,存储SOP的基本信息,与版本表分离便于版本管理';
COMMENT ON COLUMN sops.id IS 'SOP主记录唯一标识(GUID)';
COMMENT ON COLUMN sops.name IS 'SOP名称,如"车间设备每日巡检流程"';
COMMENT ON COLUMN sops.latest_published_version_id IS '指向最新发布的SOP版本,快速获取有效版本';
COMMENT ON COLUMN sops.created_by IS '创建者ID,外键引用sys_user表';-- 2.2 SOP版本表 (存储SOP的具体版本定义)
CREATE TABLE sop_versions (id BIGINT PRIMARY KEY,sop_id BIGINT NOT NULL REFERENCES sops(id) ON DELETE CASCADE,version_string VARCHAR(50) NOT NULL,status VARCHAR(20) NOT NULL CHECK (status IN ('Draft', 'Published', 'Archived')),definition JSONB NOT NULL,created_by BIGINT NOT NULL REFERENCES sys_user(user_id),created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),published_at TIMESTAMPTZ,UNIQUE (sop_id, version_string)
);
COMMENT ON TABLE sop_versions IS 'SOP版本表,存储SOP的具体版本定义,支持版本追溯与迭代';
COMMENT ON COLUMN sop_versions.sop_id IS '关联的SOP主记录ID,外键引用sops表';
COMMENT ON COLUMN sop_versions.version_string IS '版本号,如"V1.0"、"V2.1-Draft",同一SOP内唯一';
COMMENT ON COLUMN sop_versions.status IS '版本状态:Draft(草稿)、Published(已发布)、Archived(已归档)';
COMMENT ON COLUMN sop_versions.definition IS 'SOP流程定义(JSONB),包含节点、连线及配置信息';
COMMENT ON COLUMN sop_versions.published_at IS '版本发布时间,仅当状态为Published或Archived时有效';-- 关联SOP主表与最新版本,并设置为可延迟,以解决循环依赖问题
ALTER TABLE sopsADD CONSTRAINT fk_sops_latest_versionFOREIGN KEY (latest_published_version_id)REFERENCES sop_versions(id)ON DELETE SET NULL -- 如果版本被删除,仅将此链接置空DEFERRABLE INITIALLY DEFERRED;
COMMENT ON CONSTRAINT fk_sops_latest_version ON sops IS 'SOP主表与最新版本的外键关联。可延迟以方便在同一事务中创建SOP及其首个版本。';

SOP主表(存储SOP元数据,与版本分离)

-- 2.1 SOP主表 (存储SOP元数据,与版本分离)
CREATE TABLE sops (id BIGINT PRIMARY KEY,name VARCHAR(255) NOT NULL,description TEXT,latest_published_version_id BIGINT,created_by BIGINT NOT NULL REFERENCES sys_user(user_id),created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),updated_by BIGINT NOT NULL REFERENCES sys_user(user_id),updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
COMMENT ON TABLE sops IS 'SOP主信息表,存储SOP的基本信息,与版本表分离便于版本管理';
COMMENT ON COLUMN sops.id IS 'SOP主记录唯一标识(GUID)';
COMMENT ON COLUMN sops.name IS 'SOP名称,如"车间设备每日巡检流程"';
COMMENT ON COLUMN sops.latest_published_version_id IS '指向最新发布的SOP版本,快速获取有效版本';
COMMENT ON COLUMN sops.created_by IS '创建者ID,外键引用sys_user表';

SOP版本表 (存储SOP的具体版本定义)

-- 2.2 SOP版本表 (存储SOP的具体版本定义)
CREATE TABLE sop_versions (id BIGINT PRIMARY KEY,sop_id BIGINT NOT NULL REFERENCES sops(id) ON DELETE CASCADE,version_string VARCHAR(50) NOT NULL,status VARCHAR(20) NOT NULL CHECK (status IN ('Draft', 'Published', 'Archived')),definition JSONB NOT NULL,created_by BIGINT NOT NULL REFERENCES sys_user(user_id),created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),published_at TIMESTAMPTZ,UNIQUE (sop_id, version_string)
);
COMMENT ON TABLE sop_versions IS 'SOP版本表,存储SOP的具体版本定义,支持版本追溯与迭代';
COMMENT ON COLUMN sop_versions.sop_id IS '关联的SOP主记录ID,外键引用sops表';
COMMENT ON COLUMN sop_versions.version_string IS '版本号,如"V1.0"、"V2.1-Draft",同一SOP内唯一';
COMMENT ON COLUMN sop_versions.status IS '版本状态:Draft(草稿)、Published(已发布)、Archived(已归档)';
COMMENT ON COLUMN sop_versions.definition IS 'SOP流程定义(JSONB),包含节点、连线及配置信息';
COMMENT ON COLUMN sop_versions.published_at IS '版本发布时间,仅当状态为Published或Archived时有效';

关联SOP主表与最新版本,并设置为可延迟,以解决循环依赖问题

-- 关联SOP主表与最新版本,并设置为可延迟,以解决循环依赖问题
ALTER TABLE sopsADD CONSTRAINT fk_sops_latest_versionFOREIGN KEY (latest_published_version_id)REFERENCES sop_versions(id)ON DELETE SET NULL -- 如果版本被删除,仅将此链接置空DEFERRABLE INITIALLY DEFERRED;
COMMENT ON CONSTRAINT fk_sops_latest_version ON sops IS 'SOP主表与最新版本的外键关联。可延迟以方便在同一事务中创建SOP及其首个版本。';

http://www.dtcms.com/a/317799.html

相关文章:

  • jdk-24的安装及环境变量配置
  • LazyLLM教程 | 第3讲:大模型怎么玩:用LazyLLM带你理解调用逻辑与Prompt魔法!
  • 【前端开发】四. JS内置函数
  • 芯片封装(DIP、SOP、QFP、QFN、BGA、LGA、PGA)
  • C++音视频流媒体开发面试题:音视频基础
  • OceanBase DBA实战营2期--自动分区分裂学习笔记
  • 机器翻译:语料库的定义与获取,及语料预处理
  • 安宝特方案丨工业AR+AI质检方案:致力于提升检测精度与流程效率
  • 无人机航拍数据集|第6期 无人机垃圾目标检测YOLO数据集772张yolov11/yolov8/yolov5可训练
  • LeetCode 分类刷题:611. 有效三角形的个数
  • 阿里云 Flink
  • 稀土新贵醋酸镥:高纯度材料的科技密码
  • 机器人定位装配的精度革命:迁移科技如何重塑工业生产价值
  • [特殊字符]企业游学 | 探秘字节,解锁AI科技新密码
  • 智慧养老破局:科技如何让“老有所养”变成“老有优养”?
  • 加载量化模型
  • 7.3 I/O方式 (答案见原书 P315)
  • HashMap 与 ConcurrentHashMap 深度解析
  • Java Stream (二)
  • 【模电笔记】—— 直流稳压电源——稳压电路
  • 从“T+1”到“T+0”:基于SQL构建MES到数据仓库的数据采集通道
  • 嵌入式学习---在 Linux 下的 C 语言学习 Day9
  • 时隔六年!OpenAI 首发 GPT-OSS 120B / 20B 开源模型:性能、安全与授权细节全解
  • PDW分选如何展示到界面上
  • MCU控制ADAU1701,用System Workbench for STM32导入工程
  • 力扣137:只出现一次的数字Ⅱ
  • 周志华院士西瓜书实战(二)MLP+SVM+贝叶斯分类器+决策树+集成学习
  • 一周学会Matplotlib3 Python 数据可视化-图形的组成部分
  • 1.1.3 本专栏内容介绍
  • 气象可视化网站整理:探索天气数据的视觉呈现