报装业务系统电子签章数据库设计
文档信息
| 项目信息 |
详情 |
| 项目名称 |
福建水务营收系统 |
| 文档类型 |
数据库设计文档 |
| 文档版本 |
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 |
已过期 |
存证已过期 |
数据库优化建议
索引优化
- 合理使用索引:已为高频查询字段创建索引,如合同ID、签署方ID等
- 避免过度索引:仅为必要的查询条件创建索引,避免影响写入性能
- 考虑复合索引:对于经常一起查询的字段,考虑创建复合索引
性能优化
- 大字段处理:对于签章数据、存证凭证等大字段,考虑使用文件存储,数据库中只存储文件路径
- 分表策略:当数据量增长到一定程度时,考虑按年份或业务单元进行分表
- 缓存机制:对于频繁访问的合同和签章信息,实施适当的缓存策略
安全建议
- 敏感数据加密:对于签章数据、存证哈希等敏感信息,采用加密存储
- 访问控制:实施严格的数据库访问控制,限制对签章表的直接访问
- 审计日志:记录所有对签章和存证数据的操作,便于追踪和审计
数据迁移与升级计划
初始数据迁移
- 现有合同数据导入:将现有纸质合同信息导入电子合同表
- 签章模板初始化:预设常用的签章模板
- CA系统配置初始化:配置泛微CA系统的连接参数
版本升级计划
- v1.1版本:增加签章权限控制表,细化签章权限管理
- v1.2版本:增加签章日志表,记录详细的签章操作日志
- 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='签章模板表';