-- ============================================================ -- 资产管理系统 — 数据库初始化脚本 -- 数据库:asset_db | 字符集:utf8mb4 | 引擎:InnoDB -- ============================================================ -- 创建数据库 CREATE DATABASE IF NOT EXISTS asset_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE asset_db; -- ============================================================ -- 1. 用户表(t_user) -- ============================================================ DROP TABLE IF EXISTS t_borrow; DROP TABLE IF EXISTS t_disposal; DROP TABLE IF EXISTS t_asset; DROP TABLE IF EXISTS t_category; DROP TABLE IF EXISTS t_user; CREATE TABLE t_user ( id INT NOT NULL AUTO_INCREMENT COMMENT '主键', username VARCHAR(50) NOT NULL COMMENT '用户名', password VARCHAR(100) NOT NULL COMMENT '密码(MD5加密)', real_name VARCHAR(50) NOT NULL COMMENT '真实姓名', role VARCHAR(20) NOT NULL DEFAULT 'user' COMMENT '角色(admin/user)', status TINYINT NOT NULL DEFAULT 1 COMMENT '状态(1启用/0禁用)', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; -- ============================================================ -- 2. 资产分类表(t_category) -- ============================================================ CREATE TABLE t_category ( id INT NOT NULL AUTO_INCREMENT COMMENT '主键', category_code VARCHAR(20) NOT NULL COMMENT '分类编号', category_name VARCHAR(50) NOT NULL COMMENT '分类名称', description VARCHAR(200) DEFAULT NULL COMMENT '分类描述', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY uk_category_code (category_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产分类表'; -- ============================================================ -- 3. 资产表(t_asset) -- ============================================================ CREATE TABLE t_asset ( id INT NOT NULL AUTO_INCREMENT COMMENT '主键', asset_code VARCHAR(30) NOT NULL COMMENT '资产编号', asset_name VARCHAR(100) NOT NULL COMMENT '资产名称', category_id INT NOT NULL COMMENT '分类ID', status VARCHAR(20) NOT NULL DEFAULT 'available' COMMENT '状态(available/borrowed/disposed)', value DECIMAL(12,2) NOT NULL COMMENT '资产价值(元)', purchase_date DATE NOT NULL COMMENT '购入日期', location VARCHAR(100) DEFAULT NULL COMMENT '存放位置', description VARCHAR(500) DEFAULT NULL COMMENT '资产描述', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY uk_asset_code (asset_code), INDEX idx_category_id (category_id), INDEX idx_status (status), CONSTRAINT fk_asset_category FOREIGN KEY (category_id) REFERENCES t_category (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产表'; -- ============================================================ -- 4. 借用表(t_borrow) -- ============================================================ CREATE TABLE t_borrow ( id INT NOT NULL AUTO_INCREMENT COMMENT '主键', asset_id INT NOT NULL COMMENT '资产ID', user_id INT NOT NULL COMMENT '借用人ID', borrow_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '借用时间', expected_return_date DATE NOT NULL COMMENT '预计归还日期', actual_return_date DATETIME DEFAULT NULL COMMENT '实际归还日期', reason VARCHAR(200) NOT NULL COMMENT '借用原因', status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态(pending/approved/rejected/returned/overdue)', approver_id INT DEFAULT NULL COMMENT '审批人ID', approve_time DATETIME DEFAULT NULL COMMENT '审批时间', approve_remark VARCHAR(200) DEFAULT NULL COMMENT '审批备注', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), INDEX idx_borrow_asset (asset_id), INDEX idx_borrow_user (user_id), INDEX idx_borrow_status (status), CONSTRAINT fk_borrow_asset FOREIGN KEY (asset_id) REFERENCES t_asset (id), CONSTRAINT fk_borrow_user FOREIGN KEY (user_id) REFERENCES t_user (id), CONSTRAINT fk_borrow_approver FOREIGN KEY (approver_id) REFERENCES t_user (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='借用表'; -- ============================================================ -- 5. 报废表(t_disposal) -- ============================================================ CREATE TABLE t_disposal ( id INT NOT NULL AUTO_INCREMENT COMMENT '主键', asset_id INT NOT NULL COMMENT '资产ID', user_id INT NOT NULL COMMENT '申请人ID', reason VARCHAR(200) NOT NULL COMMENT '报废原因', status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态(pending/approved/rejected)', approver_id INT DEFAULT NULL COMMENT '审批人ID', approve_time DATETIME DEFAULT NULL COMMENT '审批时间', approve_remark VARCHAR(200) DEFAULT NULL COMMENT '审批备注', disposal_date DATETIME DEFAULT NULL COMMENT '报废执行日期', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), INDEX idx_disposal_asset (asset_id), INDEX idx_disposal_user (user_id), INDEX idx_disposal_status (status), CONSTRAINT fk_disposal_asset FOREIGN KEY (asset_id) REFERENCES t_asset (id), CONSTRAINT fk_disposal_user FOREIGN KEY (user_id) REFERENCES t_user (id), CONSTRAINT fk_disposal_approver FOREIGN KEY (approver_id) REFERENCES t_user (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报废表'; -- ============================================================ -- 初始数据 -- ============================================================ -- 管理员用户(密码:admin123,MD5加密后:0192023a7bbd73250516f069df18b500) INSERT INTO t_user (username, password, real_name, role, status) VALUES ('admin', '0192023a7bbd73250516f069df18b500', '管理员', 'admin', 1); -- 4个初始分类 INSERT INTO t_category (category_code, category_name, description) VALUES ('CAT001', '办公设备', '打印机、复印机、扫描仪等办公设备'), ('CAT002', '电子设备', '电脑、显示器、投影仪等电子设备'), ('CAT003', '家具', '办公桌、椅子、文件柜等家具'), ('CAT004', '交通工具', '汽车、电动车等交通工具'); -- 6条示例资产数据(分布在不同分类下,状态各不同) INSERT INTO t_asset (asset_code, asset_name, category_id, status, value, purchase_date, location, description) VALUES ('AST20260001', '惠普激光打印机', 1, 'available', 2999.00, '2025-03-15', 'A栋3楼打印室', '惠普M1136激光一体机'), ('AST20260002', '联想笔记本电脑', 2, 'borrowed', 5999.00, '2025-06-20', 'B栋2楼研发部', 'ThinkPad E14 i7处理器'), ('AST20260003', '实木办公桌', 3, 'available', 1500.00, '2024-11-10', 'A栋5楼经理室', '1.4米实木办公桌'), ('AST20260004', '爱普生投影仪', 2, 'disposed', 3500.00, '2023-08-05', 'C栋1楼会议室', '已报废处理'), ('AST20260005', '比亚迪电动轿车', 4, 'available', 159800.00, '2025-01-18', '地下车库B2', '秦PLUS DM-i 2025款'), ('AST20260006', '华为平板电脑', 2, 'borrowed', 3299.00, '2025-09-01', 'B栋3楼设计部', 'MatePad Pro 12.6英寸');