自学内容网 自学内容网

报销系统数据库设计

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
);


原文地址:https://blog.csdn.net/2201_75765221/article/details/142798735

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!