1. 报销申请表 (expense_reports
)
CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE,role ENUM('employee', 'manager', 'admin') DEFAULT 'employee',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
不使用外键时,user_id
只是自增的主键,其他表中将存储 user_id
,通过应用逻辑关联用户信息
2. 报销申请表 (expense_reports
)
CREATE TABLE expense_reports (report_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT, -- 通过代码关联用户total_amount DECIMAL(10, 2),description TEXT,status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
user_id
在没有外键的情况下,不强制关联 users
表,需要通过业务逻辑来保证关联。
3. 发票表 (invoices
)
存储与报销申请相关的发票。
CREATE TABLE invoices (invoice_id INT AUTO_INCREMENT PRIMARY KEY,report_id INT, -- 通过代码关联报销申请invoice_number VARCHAR(50) NOT NULL,amount DECIMAL(10, 2) NOT NULL,invoice_date DATE NOT NULL,file_path VARCHAR(255), -- 存储发票文件路径created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
report_id
通过业务逻辑关联到 expense_reports
表。
4. 审批流程表 (approvals
)
CREATE TABLE approvals (approval_id INT AUTO_INCREMENT PRIMARY KEY,report_id INT, -- 通过代码关联报销申请approver_id INT, -- 通过代码关联审批人status ENUM('approved', 'rejected') NOT NULL,comment TEXT,approval_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
5. 费用类别表 (expense_categories
)
CREATE TABLE expense_categories (category_id INT AUTO_INCREMENT PRIMARY KEY,category_name VARCHAR(50) NOT NULL UNIQUE,description TEXT
);
6. 报销明细表 (expense_items
)
记录每份报销申请中的具体费用项。
CREATE TABLE expense_items (item_id INT AUTO_INCREMENT PRIMARY KEY,report_id INT, -- 通过代码关联报销申请category_id INT, -- 通过代码关联类别amount DECIMAL(10, 2) NOT NULL,description TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);