授课语音

请假管理系统设计:请假记录、用户信息、角色权限等核心数据表

在开发请假管理系统时,需要设计多个核心数据表来存储用户信息、请假记录和角色权限等重要数据。合理的数据库设计可以提高系统的性能和可扩展性,确保数据的一致性和完整性。本节将详细讲解请假管理系统的核心数据表设计,并结合具体的数据库表结构及其实现。


1. 用户信息表(users)

用户信息表存储系统中所有用户的基本信息,包括用户名、密码、联系方式、角色等。该表是整个系统中最基本的表,用于管理用户身份。

1.1 数据表设计

CREATE TABLE users (
    user_id INT PRIMARY KEY AUTO_INCREMENT,  -- 用户ID,主键,自增
    username VARCHAR(100) NOT NULL,          -- 用户名,唯一,不可为空
    password VARCHAR(255) NOT NULL,          -- 密码,不可为空
    full_name VARCHAR(100),                  -- 用户全名
    email VARCHAR(100),                      -- 用户邮箱
    phone VARCHAR(20),                       -- 用户联系电话
    role_id INT,                             -- 用户角色ID,外键,关联roles表
    status INT DEFAULT 1,                    -- 用户状态,1:启用,0:禁用
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 用户创建时间
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  -- 更新时间
);

中文注释

  • user_id:唯一标识每个用户,自动递增。
  • username:用户登录的用户名,不能重复。
  • password:用户的登录密码,存储加密后的值。
  • role_id:用户的角色ID,通过外键关联 roles 表中的角色信息。
  • status:用户状态,1 表示启用,0 表示禁用。
  • created_atupdated_at:分别表示用户的创建时间和最后更新时间。

2. 角色信息表(roles)

角色信息表用于存储系统中不同角色的信息,例如管理员、普通员工、经理等。角色的设计可以帮助系统进行权限管理。

2.1 数据表设计

CREATE TABLE roles (
    role_id INT PRIMARY KEY AUTO_INCREMENT,  -- 角色ID,主键,自增
    role_name VARCHAR(50) NOT NULL,          -- 角色名称,唯一,不可为空
    description VARCHAR(255),                -- 角色描述
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 创建时间
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  -- 更新时间
);

中文注释

  • role_id:唯一标识每个角色,自动递增。
  • role_name:角色名称,不能为空,且唯一。
  • description:角色的描述信息。
  • created_atupdated_at:分别表示角色的创建时间和最后更新时间。

3. 请假记录表(leave_requests)

请假记录表存储用户的请假请求信息,包括请假开始时间、结束时间、请假类型、请假理由等。该表记录每个用户的请假历史和当前状态。

3.1 数据表设计

CREATE TABLE leave_requests (
    leave_id INT PRIMARY KEY AUTO_INCREMENT,  -- 请假记录ID,主键,自增
    user_id INT NOT NULL,                     -- 用户ID,外键,关联users表
    leave_type VARCHAR(50) NOT NULL,          -- 请假类型(如事假、病假等)
    leave_reason VARCHAR(255),                -- 请假原因
    leave_start DATE NOT NULL,                -- 请假开始日期
    leave_end DATE NOT NULL,                  -- 请假结束日期
    leave_status INT DEFAULT 0,               -- 请假状态,0:待审批,1:批准,2:拒绝
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 创建时间
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  -- 更新时间
    FOREIGN KEY (user_id) REFERENCES users(user_id)  -- 外键,关联用户信息表
);

中文注释

  • leave_id:唯一标识每条请假记录,自动递增。
  • user_id:关联的用户ID,外键,指向 users 表的 user_id
  • leave_type:请假类型,如事假、病假等。
  • leave_reason:请假原因的详细说明。
  • leave_startleave_end:请假的开始和结束日期。
  • leave_status:请假状态,0 表示待审批,1 表示批准,2 表示拒绝。
  • created_atupdated_at:分别表示请假记录的创建时间和最后更新时间。

4. 权限控制表(permissions)

权限控制表用于存储系统中不同角色的权限信息,确保系统能够控制不同角色的操作范围。每个角色拥有特定的权限。

4.1 数据表设计

CREATE TABLE permissions (
    permission_id INT PRIMARY KEY AUTO_INCREMENT,  -- 权限ID,主键,自增
    role_id INT NOT NULL,                          -- 角色ID,外键,关联roles表
    permission_name VARCHAR(100) NOT NULL,         -- 权限名称
    description VARCHAR(255),                      -- 权限描述
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 创建时间
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  -- 更新时间
    FOREIGN KEY (role_id) REFERENCES roles(role_id)  -- 外键,关联角色信息表
);

中文注释

  • permission_id:唯一标识每个权限,自动递增。
  • role_id:角色ID,外键,关联 roles 表的 role_id
  • permission_name:权限名称,例如“查看请假记录”、“审批请假”等。
  • description:权限的描述信息。
  • created_atupdated_at:分别表示权限的创建时间和最后更新时间。

5. 总结

  • 用户信息表(users):存储所有用户的基本信息及其角色。
  • 角色信息表(roles):定义系统中的各个角色,便于权限管理。
  • 请假记录表(leave_requests):记录用户的请假信息,包括请假类型、原因、时间及审批状态。
  • 权限控制表(permissions):用于控制不同角色的权限,确保权限的精细化管理。

通过这些核心数据表的设计,可以清晰地管理系统中的用户、角色、权限和请假记录,从而为开发高效且安全的请假管理系统奠定基础。

去1:1私密咨询

系列课程: