# 数据库文档 ## 数据库设计 ### 数据库架构 #### 1. 收费管理数据库 (water_management.revenue) ```sql -- 用户表 CREATE TABLE users ( user_id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(100) NOT NULL, real_name VARCHAR(100), email VARCHAR(100), phone VARCHAR(20), user_type ENUM('PERSONAL', 'ENTERPRISE') DEFAULT 'PERSONAL', status ENUM('ACTIVE', 'INACTIVE') DEFAULT 'ACTIVE', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- 账单表 CREATE TABLE bills ( bill_id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, bill_number VARCHAR(50) UNIQUE NOT NULL, bill_type ENUM('WATER', 'SEWER', 'FEE') NOT NULL, billing_period DATE NOT NULL, previous_reading DECIMAL(10,2), current_reading DECIMAL(10,2), usage_amount DECIMAL(10,2), unit_price DECIMAL(10,4), total_amount DECIMAL(10,2), due_date DATE, payment_status ENUM('UNPAID', 'PARTIAL', 'PAID', 'OVERDUE') DEFAULT 'UNPAID', paid_amount DECIMAL(10,2), paid_at TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(user_id) ); -- 支付记录表 CREATE TABLE payments ( payment_id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, bill_id BIGINT NOT NULL, payment_number VARCHAR(50) UNIQUE NOT NULL, payment_method ENUM('CASH', 'BANK_TRANSFER', 'WECHAT', 'ALIPAY', 'AUTO_DEBIT'), amount DECIMAL(10,2) NOT NULL, payment_time TIMESTAMP NOT NULL, payment_status ENUM('SUCCESS', 'FAILED', 'PENDING', 'REFUNDED'), transaction_id VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(user_id), FOREIGN KEY (bill_id) REFERENCES bills(bill_id) ); ``` #### 2. 生产管理数据库 (water_management.production) ```sql -- 设备表 CREATE TABLE equipment ( equipment_id BIGINT PRIMARY KEY AUTO_INCREMENT, equipment_name VARCHAR(100) NOT NULL, equipment_type VARCHAR(50) NOT NULL, equipment_code VARCHAR(50) UNIQUE NOT NULL, location VARCHAR(200), status ENUM('ACTIVE', 'INACTIVE', 'MAINTENANCE', 'BROKEN'), installation_date DATE, last_maintenance_date DATE, next_maintenance_date DATE, specifications JSON, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- 生产计划表 CREATE TABLE production_plans ( plan_id BIGINT PRIMARY KEY AUTO_INCREMENT, plan_name VARCHAR(100) NOT NULL, plan_type ENUM('DAILY', 'WEEKLY', 'MONTHLY', 'QUARTERLY'), start_date DATE NOT NULL, end_date DATE NOT NULL, target_output DECIMAL(10,2), actual_output DECIMAL(10,2), status ENUM('PLANNED', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'), created_by BIGINT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (created_by) REFERENCES users(user_id) ); -- 生产记录表 CREATE TABLE production_records ( record_id BIGINT PRIMARY KEY AUTO_INCREMENT, plan_id BIGINT NOT NULL, equipment_id BIGINT NOT NULL, production_date DATE NOT NULL, shift ENUM('MORNING', 'AFTERNOON', 'NIGHT'), target_quantity DECIMAL(10,2), actual_quantity DECIMAL(10,2), quality_score DECIMAL(5,2), energy_consumption DECIMAL(10,2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (plan_id) REFERENCES production_plans(plan_id), FOREIGN KEY (equipment_id) REFERENCES equipment(equipment_id) ); ``` #### 3. DMA管理数据库 (water_management.dma) ```sql -- DMA区域表 CREATE TABLE dma_areas ( dma_id BIGINT PRIMARY KEY AUTO_INCREMENT, dma_name VARCHAR(100) NOT NULL, dma_code VARCHAR(50) UNIQUE NOT NULL, area_size DECIMAL(10,2), population_count INT, customer_count INT, pressure_zone VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- 监测点表 CREATE TABLE monitoring_points ( point_id BIGINT PRIMARY KEY AUTO_INCREMENT, dma_id BIGINT NOT NULL, point_name VARCHAR(100) NOT NULL, point_type ENUM('PRESSURE', 'FLOW', 'QUALITY', 'LEAK'), location VARCHAR(200), coordinates JSON, installation_date DATE, last_calibration_date DATE, status ENUM('ACTIVE', 'INACTIVE', 'MAINTENANCE'), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (dma_id) REFERENCES dma_areas(dma_id) ); -- 流量记录表 CREATE TABLE flow_records ( record_id BIGINT PRIMARY KEY AUTO_INCREMENT, point_id BIGINT NOT NULL, flow_rate DECIMAL(10,2), pressure DECIMAL(10,2), temperature DECIMAL(5,2), timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, quality_score DECIMAL(5,2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (point_id) REFERENCES monitoring_points(point_id) ); -- 报警记录表 CREATE TABLE alarms ( alarm_id BIGINT PRIMARY KEY AUTO_INCREMENT, point_id BIGINT NOT NULL, alarm_type ENUM('HIGH_PRESSURE', 'LOW_PRESSURE', 'HIGH_FLOW', 'LOW_FLOW', 'LEAK', 'QUALITY'), severity ENUM('LOW', 'MEDIUM', 'HIGH', 'CRITICAL'), threshold_value DECIMAL(10,2), actual_value DECIMAL(10,2), status ENUM('ACTIVE', 'ACKNOWLEDGED', 'RESOLVED'), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, resolved_at TIMESTAMP, resolved_by BIGINT, FOREIGN KEY (point_id) REFERENCES monitoring_points(point_id), FOREIGN KEY (resolved_by) REFERENCES users(user_id) ); ``` --- *自动生成于 2026-06-16*