-- 用户表
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)
);
-- 设备表
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)
);
-- 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