fujian_water_biz_doc/04_Appendix/02_Database_Design_CA.md

19 KiB
Raw Blame History

报装业务系统电子签章数据库设计

文档信息

项目信息 详情
项目名称 福建水务营收系统
文档类型 数据库设计文档
文档版本 v1.0
编写日期 2024-12-19
文档状态 🟡 进行中

表结构设计

1. 电子合同表(installation_contract)

表描述

存储报装业务系统中的电子合同信息,包括合同基本信息、状态和文件链接等。

表结构

字段名 类型 长度 允许空 默认值 主键 说明
id bigint - - 主键ID
contract_code varchar 32 - - 合同编号
installation_id bigint - - - 报装申请ID
contract_type varchar 20 - - 合同类型
contract_title varchar 100 - - 合同标题
contract_content text - NULL - 合同内容
contract_file_url varchar 255 NULL - 合同文件URL
contract_status varchar 20 - - 合同状态
valid_from datetime - NULL - 生效时间
valid_to datetime - NULL - 到期时间
create_by varchar 64 NULL - 创建人
create_time datetime - CURRENT_TIMESTAMP - 创建时间
update_by varchar 64 NULL - 更新人
update_time datetime - CURRENT_TIMESTAMP - 更新时间

索引设计

索引名 索引类型 字段 说明
PRIMARY 主键 id 主键索引
uk_contract_code 唯一索引 contract_code 合同编号唯一索引
idx_installation_id 普通索引 installation_id 报装申请ID索引

字段说明

  • contract_type: 合同类型,如"用水协议"、"施工合同"等
  • contract_status: 合同状态,包括"待签署"、"签署中"、"已签署"、"已作废"等

2. 电子签章记录表(installation_signature)

表描述

记录电子合同的签章信息,包括签署方信息、签署时间、签章数据等。

表结构

字段名 类型 长度 允许空 默认值 主键 说明
id bigint - - 主键ID
signature_code varchar 32 - - 签章编号
contract_id bigint - - - 合同ID
signer_type varchar 20 - - 签署方类型
signer_id varchar 64 - - 签署方ID
signer_name varchar 100 - - 签署方名称
signature_time datetime - NULL - 签署时间
signature_ip varchar 50 NULL - 签署IP
signature_location varchar 255 NULL - 签署位置
signature_image varchar 255 NULL - 签章图像URL
signature_data text - NULL - 签章数据
timestamp_cert text - NULL - 时间戳凭证
signature_status varchar 20 - - 签章状态
create_time datetime - CURRENT_TIMESTAMP - 创建时间
update_time datetime - CURRENT_TIMESTAMP - 更新时间

索引设计

索引名 索引类型 字段 说明
PRIMARY 主键 id 主键索引
uk_signature_code 唯一索引 signature_code 签章编号唯一索引
idx_contract_id 普通索引 contract_id 合同ID索引
idx_signer_id 普通索引 signer_id 签署方ID索引

字段说明

  • signer_type: 签署方类型,如"客户"、"水务公司"等
  • signature_status: 签章状态,包括"待签署"、"已签署"、"签署失败"、"已撤销"等
  • signature_data: 签章的原始数据,通常为加密后的数据
  • timestamp_cert: 时间戳凭证,用于证明签署时间的真实性

3. 电子存证记录表(installation_evidence)

表描述

存储电子合同的存证信息,包括存证哈希、存证时间、存证凭证等。

表结构

字段名 类型 长度 允许空 默认值 主键 说明
id bigint - - 主键ID
evidence_code varchar 32 - - 存证编号
contract_id bigint - - - 合同ID
evidence_type varchar 20 - - 存证类型
evidence_hash varchar 128 - - 存证哈希值
evidence_time datetime - - - 存证时间
evidence_cert text - NULL - 存证凭证
evidence_status varchar 20 - - 存证状态
storage_location varchar 255 NULL - 存储位置
verify_url varchar 255 NULL - 验证URL
create_time datetime - CURRENT_TIMESTAMP - 创建时间
update_time datetime - CURRENT_TIMESTAMP - 更新时间

索引设计

索引名 索引类型 字段 说明
PRIMARY 主键 id 主键索引
uk_evidence_code 唯一索引 evidence_code 存证编号唯一索引
idx_contract_id 普通索引 contract_id 合同ID索引

字段说明

  • evidence_type: 存证类型,如"区块链存证"、"第三方存证"等
  • evidence_hash: 存证文件的哈希值通常使用SHA-256算法生成
  • evidence_status: 存证状态,包括"存证中"、"存证成功"、"存证失败"等
  • verify_url: 存证验证URL可用于在线验证存证的真实性

4. CA系统配置表(installation_ca_config)

表描述

存储泛微CA电子签章系统的配置信息包括接口地址、认证信息等。

表结构

字段名 类型 长度 允许空 默认值 主键 说明
id bigint - - 主键ID
config_name varchar 50 - - 配置名称
config_key varchar 50 - - 配置键
config_value varchar 500 - - 配置值
config_desc varchar 255 NULL - 配置描述
is_enabled tinyint - 1 - 是否启用
create_by varchar 64 NULL - 创建人
create_time datetime - CURRENT_TIMESTAMP - 创建时间
update_by varchar 64 NULL - 更新人
update_time datetime - CURRENT_TIMESTAMP - 更新时间

索引设计

索引名 索引类型 字段 说明
PRIMARY 主键 id 主键索引
uk_config_key 唯一索引 config_key 配置键唯一索引

字段说明

  • config_key: 配置键,如"ca.api.url"、"ca.api.key"等
  • config_value: 配置值,存储实际的配置内容
  • is_enabled: 是否启用1表示启用0表示禁用

5. 签章模板表(installation_signature_template)

表描述

存储电子签章模板信息,用于快速生成签章。

表结构

字段名 类型 长度 允许空 默认值 主键 说明
id bigint - - 主键ID
template_code varchar 32 - - 模板编号
template_name varchar 100 - - 模板名称
template_type varchar 20 - - 模板类型
template_image varchar 255 NULL - 模板图像URL
template_data text - NULL - 模板数据
is_default tinyint - 0 - 是否默认
is_enabled tinyint - 1 - 是否启用
create_by varchar 64 NULL - 创建人
create_time datetime - CURRENT_TIMESTAMP - 创建时间
update_by varchar 64 NULL - 更新人
update_time datetime - CURRENT_TIMESTAMP - 更新时间

索引设计

索引名 索引类型 字段 说明
PRIMARY 主键 id 主键索引
uk_template_code 唯一索引 template_code 模板编号唯一索引

字段说明

  • template_type: 模板类型,如"个人签章"、"企业签章"等
  • template_data: 模板数据,包含签章的样式、大小等信息
  • is_default: 是否默认模板1表示是0表示否
  • is_enabled: 是否启用1表示启用0表示禁用

表关系设计

erDiagram
    installation_contract ||--o{ installation_signature : "签署"
    installation_contract ||--o{ installation_evidence : "存证"
    installation_signature }|--|| installation_signature_template : "使用"
    installation_contract }|--|| installation_application : "关联"
    
    installation_contract {
        bigint id PK
        varchar contract_code
        bigint installation_id FK
        varchar contract_type
        varchar contract_title
        text contract_content
        varchar contract_file_url
        varchar contract_status
        datetime valid_from
        datetime valid_to
    }
    
    installation_signature {
        bigint id PK
        varchar signature_code
        bigint contract_id FK
        varchar signer_type
        varchar signer_id
        varchar signer_name
        datetime signature_time
        varchar signature_ip
        varchar signature_location
        varchar signature_image
        text signature_data
        text timestamp_cert
        varchar signature_status
    }
    
    installation_evidence {
        bigint id PK
        varchar evidence_code
        bigint contract_id FK
        varchar evidence_type
        varchar evidence_hash
        datetime evidence_time
        text evidence_cert
        varchar evidence_status
        varchar storage_location
        varchar verify_url
    }
    
    installation_ca_config {
        bigint id PK
        varchar config_name
        varchar config_key
        varchar config_value
        varchar config_desc
        tinyint is_enabled
    }
    
    installation_signature_template {
        bigint id PK
        varchar template_code
        varchar template_name
        varchar template_type
        varchar template_image
        text template_data
        tinyint is_default
        tinyint is_enabled
    }
    
    installation_application {
        bigint id PK
        varchar application_code
        varchar customer_name
        varchar application_status
    }

数据字典

合同类型(contract_type)

代码 名称 说明
WATER_AGREEMENT 用水协议 客户与水务公司签订的用水服务协议
CONSTRUCTION_CONTRACT 施工合同 水务工程施工合同
INSTALLATION_AGREEMENT 报装协议 新用户报装服务协议

合同状态(contract_status)

代码 名称 说明
DRAFT 草稿 合同草稿状态,尚未发起签署
PENDING 待签署 合同已创建,等待签署
SIGNING 签署中 合同正在签署过程中
COMPLETED 已签署 合同已完成所有签署
EXPIRED 已过期 合同已过期
CANCELLED 已作废 合同已被作废

签署方类型(signer_type)

代码 名称 说明
CUSTOMER 客户 用水客户
COMPANY 水务公司 水务服务提供方
CONTRACTOR 施工方 工程施工单位
SUPERVISOR 监理方 工程监理单位

签章状态(signature_status)

代码 名称 说明
PENDING 待签署 等待签署
COMPLETED 已签署 签署完成
FAILED 签署失败 签署过程中出现错误
REVOKED 已撤销 签章已被撤销

存证类型(evidence_type)

代码 名称 说明
BLOCKCHAIN 区块链存证 使用区块链技术进行电子存证
THIRD_PARTY 第三方存证 通过第三方机构进行电子存证
LOCAL 本地存证 在本地系统进行电子存证

存证状态(evidence_status)

代码 名称 说明
PROCESSING 存证中 正在进行存证
COMPLETED 存证成功 存证已完成
FAILED 存证失败 存证过程中出现错误
EXPIRED 已过期 存证已过期

数据库优化建议

索引优化

  1. 合理使用索引已为高频查询字段创建索引如合同ID、签署方ID等
  2. 避免过度索引:仅为必要的查询条件创建索引,避免影响写入性能
  3. 考虑复合索引:对于经常一起查询的字段,考虑创建复合索引

性能优化

  1. 大字段处理:对于签章数据、存证凭证等大字段,考虑使用文件存储,数据库中只存储文件路径
  2. 分表策略:当数据量增长到一定程度时,考虑按年份或业务单元进行分表
  3. 缓存机制:对于频繁访问的合同和签章信息,实施适当的缓存策略

安全建议

  1. 敏感数据加密:对于签章数据、存证哈希等敏感信息,采用加密存储
  2. 访问控制:实施严格的数据库访问控制,限制对签章表的直接访问
  3. 审计日志:记录所有对签章和存证数据的操作,便于追踪和审计

数据迁移与升级计划

初始数据迁移

  1. 现有合同数据导入:将现有纸质合同信息导入电子合同表
  2. 签章模板初始化:预设常用的签章模板
  3. CA系统配置初始化配置泛微CA系统的连接参数

版本升级计划

  1. v1.1版本:增加签章权限控制表,细化签章权限管理
  2. v1.2版本:增加签章日志表,记录详细的签章操作日志
  3. v2.0版本支持多CA系统集成增加CA系统路由表

附录

SQL创建脚本

-- 电子合同表
CREATE TABLE `installation_contract` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `contract_code` varchar(32) NOT NULL COMMENT '合同编号',
  `installation_id` bigint NOT NULL COMMENT '报装申请ID',
  `contract_type` varchar(20) NOT NULL COMMENT '合同类型',
  `contract_title` varchar(100) NOT NULL COMMENT '合同标题',
  `contract_content` text COMMENT '合同内容',
  `contract_file_url` varchar(255) DEFAULT NULL COMMENT '合同文件URL',
  `contract_status` varchar(20) NOT NULL COMMENT '合同状态',
  `valid_from` datetime DEFAULT NULL COMMENT '生效时间',
  `valid_to` datetime DEFAULT NULL COMMENT '到期时间',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_contract_code` (`contract_code`),
  KEY `idx_installation_id` (`installation_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报装合同表';

-- 电子签章记录表
CREATE TABLE `installation_signature` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `signature_code` varchar(32) NOT NULL COMMENT '签章编号',
  `contract_id` bigint NOT NULL COMMENT '合同ID',
  `signer_type` varchar(20) NOT NULL COMMENT '签署方类型',
  `signer_id` varchar(64) NOT NULL COMMENT '签署方ID',
  `signer_name` varchar(100) NOT NULL COMMENT '签署方名称',
  `signature_time` datetime DEFAULT NULL COMMENT '签署时间',
  `signature_ip` varchar(50) DEFAULT NULL COMMENT '签署IP',
  `signature_location` varchar(255) DEFAULT NULL COMMENT '签署位置',
  `signature_image` varchar(255) DEFAULT NULL COMMENT '签章图像URL',
  `signature_data` text COMMENT '签章数据',
  `timestamp_cert` text COMMENT '时间戳凭证',
  `signature_status` varchar(20) NOT NULL COMMENT '签章状态',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_signature_code` (`signature_code`),
  KEY `idx_contract_id` (`contract_id`),
  KEY `idx_signer_id` (`signer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报装签章记录表';

-- 电子存证记录表
CREATE TABLE `installation_evidence` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `evidence_code` varchar(32) NOT NULL COMMENT '存证编号',
  `contract_id` bigint NOT NULL COMMENT '合同ID',
  `evidence_type` varchar(20) NOT NULL COMMENT '存证类型',
  `evidence_hash` varchar(128) NOT NULL COMMENT '存证哈希值',
  `evidence_time` datetime NOT NULL COMMENT '存证时间',
  `evidence_cert` text COMMENT '存证凭证',
  `evidence_status` varchar(20) NOT NULL COMMENT '存证状态',
  `storage_location` varchar(255) DEFAULT NULL COMMENT '存储位置',
  `verify_url` varchar(255) DEFAULT NULL COMMENT '验证URL',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_evidence_code` (`evidence_code`),
  KEY `idx_contract_id` (`contract_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报装存证记录表';

-- CA系统配置表
CREATE TABLE `installation_ca_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `config_name` varchar(50) NOT NULL COMMENT '配置名称',
  `config_key` varchar(50) NOT NULL COMMENT '配置键',
  `config_value` varchar(500) NOT NULL COMMENT '配置值',
  `config_desc` varchar(255) DEFAULT NULL COMMENT '配置描述',
  `is_enabled` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_config_key` (`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CA系统配置表';

-- 签章模板表
CREATE TABLE `installation_signature_template` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `template_code` varchar(32) NOT NULL COMMENT '模板编号',
  `template_name` varchar(100) NOT NULL COMMENT '模板名称',
  `template_type` varchar(20) NOT NULL COMMENT '模板类型',
  `template_image` varchar(255) DEFAULT NULL COMMENT '模板图像URL',
  `template_data` text COMMENT '模板数据',
  `is_default` tinyint NOT NULL DEFAULT '0' COMMENT '是否默认',
  `is_enabled` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_template_code` (`template_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='签章模板表';