# 智慧水务管理系统数据库设计文档 ## 文档概述 本目录包含智慧水务管理系统的完整数据库设计,包括 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. 初始化步骤 ```bash # 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. 数据验证 ```sql -- 检查表数量 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 查询示例** ```sql -- 查询在线设备 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 查询示例** ```sql -- 查询水表流量数据 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. 业务函数 **水费计算** ```sql SELECT * FROM calculate_water_fee(1, '2026-06'); ``` **设备状态监控** ```sql SELECT * FROM get_device_latest_metrics('JM20260001'); ``` **报警历史查询** ```sql SELECT * FROM get_alert_history('精芒片区', 7); ``` ## 性能优化 ### 1. 索引策略 - 为常用查询字段创建索引 - 复合索引优化多条件查询 - 分区索引处理大数据量 ### 2. 查询优化 - 使用物化视图缓存常用统计 - 限制查询时间范围 - 使用连接池管理数据库连接 ### 3. 存储优化 - 时序数据使用 TDengine 存储 - 历史数据定期归档 - 冷热数据分离存储 ## 安全配置 ### 1. 用户权限 - 最小权限原则 - 角色权限分离 - 密码策略 ### 2. 数据安全 - 敏感数据加密 - 审计日志记录 - 定期数据备份 ### 3. 网络安全 - 数据库访问限制 - SSL/TLS 加密传输 - 防火墙配置 ## 维护文档 ### 1. 日常维护 - 数据库备份策略 - 性能监控 - 故障排查 ### 2. 版本升级 - 迁移脚本管理 - 数据兼容性检查 - 回滚计划 ### 3. 容量规划 - 数据增长预估 - 存储容量规划 - 性能容量评估 ## 相关文档 - [系统架构文档](../docs/architecture.md) - [API 接口文档](../docs/api.md) - [部署运维文档](../docs/deployment.md) --- ## 联系信息 - **创建者**: bot_dev1 - **创建时间**: 2026-06-15 - **最后更新**: 2026-06-15 - **版本**: v1.0