智慧水务管理系统 - 精河县供水工程综合管理平台
bot_dev1 c4fec23345 Issue #18: 数据库设计 PostgreSQL + TDengine 完整 DDL 建表脚本 1 hafta önce
..
migration Issue #18: 数据库设计 PostgreSQL + TDengine 完整 DDL 建表脚本 1 hafta önce
postgresql Issue #18: 数据库设计 PostgreSQL + TDengine 完整 DDL 建表脚本 1 hafta önce
seed Issue #18: 数据库设计 PostgreSQL + TDengine 完整 DDL 建表脚本 1 hafta önce
tdengine Issue #18: 数据库设计 PostgreSQL + TDengine 完整 DDL 建表脚本 1 hafta önce
README.md Issue #18: 数据库设计 PostgreSQL + TDengine 完整 DDL 建表脚本 1 hafta önce
chemical_dosing_ddl.sql feat(wm-production): #64 GIS地图展示后端服务 1 hafta önce
dma_ddl.sql feat(wm-dma): #59 DMA分区计量与漏损分析 1 hafta önce
gis_ddl.sql feat(wm-revenue): #55 客服知识库+公告板+KPI看板完整实现 1 hafta önce
quality_ledger_ddl.sql feat(wm-revenue): #55 客服知识库+公告板+KPI看板完整实现 1 hafta önce

README.md

智慧水务管理系统数据库设计文档

文档概述

本目录包含智慧水务管理系统的完整数据库设计,包括 PostgreSQL + TDengine + Flyway 版本管理。

目录结构

db/
├── README.md                     # 本文档
├── flyway.conf                   # Flyway 配置文件
├── migration/                    # Flyway 迁移脚本目录
│   └── V1.1__Add_Indexes_And_Triggers.sql  # 性能优化迁移
├── postgresql/                   # PostgreSQL 数据库脚本
│   └── V1__init.sql            # 完整的 PostgreSQL DDL 脚本
├── tdengine/                    # TDengine 时序数据库脚本
│   └── init.sql               # TDengine 建表脚本
└── seed/                       # 初始化数据脚本
    └── V1__seed.sql          # 初始化数据脚本

数据库设计

1. PostgreSQL 数据库设计

核心模块

用户权限体系 (sys_*)

  • sys_dept: 部门管理(水利局/水务公司/运维单位)
  • sys_user: 用户管理
  • sys_role: 角色管理(admin/leader/manager/operator/tech)
  • sys_menu: 菜单管理
  • sys_user_role: 用户-角色关联
  • sys_role_menu: 角色-菜单关联
  • sys_operation_log: 操作日志

物联网设备管理 (iot_*)

  • iot_device_model: 设备模型定义
  • iot_device: 设备实例管理
  • iot_telemetry_cache: 设备遥测数据缓存
  • iot_device_heartbeat: 设备心跳记录
  • iot_firmware: 设备固件管理
  • iot_firmware_upgrade: 设备固件升级记录

营业收费 (rev_*)

  • rev_customer: 用水户管理
  • rev_meter: 水表档案
  • rev_reading_schedule: 抄表计划
  • rev_reading: 抄表记录
  • rev_water_rate: 水费标准
  • rev_bill: 水费账单
  • rev_payment: 收费记录

巡检系统 (patrol_*)

  • patrol_route: 巡检路线
  • patrol_task: 巡检任务
  • patrol_record: 巡检记录
  • patrol_standard: 巡检标准

报警管理 (alert_*)

  • alert_rule: 报警规则
  • alert_event: 报警事件
  • alert_handle_record: 报警处理记录
  • alert_notify_scheme: 通知方案

系统管理

  • sys_config: 系统参数配置
  • sys_dict: 数据字典
  • flyway_schema_history: Flyway 迁移历史

空间数据支持

  • 使用 PostGIS 扩展支持空间数据
  • 设备位置使用 GEOMETRY(Point, 4326) 存储
  • 支持地理位置查询和分析

2. TDengine 时序数据库设计

时序数据表结构

设备遥测数据超级表

  • iot_flow_data: 水表流量数据
  • iot_pressure_data: 压力传感器数据
  • iot_water_quality_data: 水质监测数据
  • iot_level_data: 液位传感器数据
  • iot_valve_data: 阀门状态数据
  • iot_status_data: 设备状态数据

片区和设备类型子表

  • 按片区和设备类型创建对应子表
  • 支持不同数据处理级别(raw/processed/aggregated)

统计和质量数据表

  • iot_device_stats: 设备运行统计
  • iot_data_quality_stats: 数据质量统计
  • water_supply_stats: 供水运行统计

3. Flyway 版本管理

迁移脚本

  • V1__init.sql: 初始化数据库结构
  • V1.1__Add_Indexes_And_Triggers.sql: 性能优化和索引创建
  • V1__seed.sql: 初始化数据

配置文件

  • flyway.conf: Flyway 配置
  • 支持自动迁移和版本管理

部署说明

1. 环境要求

PostgreSQL

  • 版本: PostgreSQL 16+
  • 扩展: PostGIS
  • 端口: 5432
  • 数据库: water_mgt

TDengine

  • 版本: TDengine 3.x
  • 端口: 6030
  • 数据库: water_mgt

2. 初始化步骤

# 1. 启动数据库服务
systemctl start postgresql
systemctl start taosd

# 2. 安装 PostGIS 扩展
psql -U postgres -d water_mgt -c "CREATE EXTENSION IF NOT EXISTS postgis;"

# 3. 运行 Flyway 迁移
flyway -configFile=flyway.conf migrate

# 4. 插入初始化数据
psql -U postgres -d water_mgt -f db/seed/V1__seed.sql

# 5. 运行 TDengine 初始化脚本
taos -s "db/tdengine/init.sql"

3. 数据验证

-- 检查表数量
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public';

-- 检查数据量
SELECT '用户数' AS table_name, COUNT(*) AS count FROM sys_user UNION ALL
SELECT '设备数', COUNT(*) FROM iot_device UNION ALL
SELECT '客户数', COUNT(*) FROM rev_customer UNION ALL
SELECT '水表数', COUNT(*) FROM rev_meter;

使用说明

1. 数据访问

PostgreSQL 查询示例

-- 查询在线设备
SELECT device_sn, device_name, status FROM iot_device WHERE status = 'online';

-- 查询区域用水统计
SELECT area, SUM(consumption) as total_usage 
FROM rev_reading r 
JOIN rev_meter m ON r.meter_id = m.id 
JOIN rev_customer c ON m.customer_id = c.id 
GROUP BY area;

TDengine 查询示例

-- 查询水表流量数据
SELECT ts, device_sn, metric_value 
FROM jingmang_flow_data 
WHERE ts > NOW() - INTERVAL '1 day'
ORDER BY ts DESC;

-- 计算小时平均流量
SELECT COUNT(*) / 60.0 as avg_flow 
FROM jingmang_flow_data 
WHERE ts > NOW() - INTERVAL '1 hour';

2. 业务函数

水费计算

SELECT * FROM calculate_water_fee(1, '2026-06');

设备状态监控

SELECT * FROM get_device_latest_metrics('JM20260001');

报警历史查询

SELECT * FROM get_alert_history('精芒片区', 7);

性能优化

1. 索引策略

  • 为常用查询字段创建索引
  • 复合索引优化多条件查询
  • 分区索引处理大数据量

2. 查询优化

  • 使用物化视图缓存常用统计
  • 限制查询时间范围
  • 使用连接池管理数据库连接

3. 存储优化

  • 时序数据使用 TDengine 存储
  • 历史数据定期归档
  • 冷热数据分离存储

安全配置

1. 用户权限

  • 最小权限原则
  • 角色权限分离
  • 密码策略

2. 数据安全

  • 敏感数据加密
  • 审计日志记录
  • 定期数据备份

3. 网络安全

  • 数据库访问限制
  • SSL/TLS 加密传输
  • 防火墙配置

维护文档

1. 日常维护

  • 数据库备份策略
  • 性能监控
  • 故障排查

2. 版本升级

  • 迁移脚本管理
  • 数据兼容性检查
  • 回滚计划

3. 容量规划

  • 数据增长预估
  • 存储容量规划
  • 性能容量评估

相关文档


联系信息

  • 创建者: bot_dev1
  • 创建时间: 2026-06-15
  • 最后更新: 2026-06-15
  • 版本: v1.0