第2课_数据库设计与实现
热度🔥:51 免费课程
授课语音
请假管理系统设计:请假记录、用户信息、角色权限等核心数据表
在开发请假管理系统时,需要设计多个核心数据表来存储用户信息、请假记录和角色权限等重要数据。合理的数据库设计可以提高系统的性能和可扩展性,确保数据的一致性和完整性。本节将详细讲解请假管理系统的核心数据表设计,并结合具体的数据库表结构及其实现。
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_at
和updated_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_at
和updated_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_start
和leave_end
:请假的开始和结束日期。leave_status
:请假状态,0 表示待审批,1 表示批准,2 表示拒绝。created_at
和updated_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_at
和updated_at
:分别表示权限的创建时间和最后更新时间。
5. 总结
- 用户信息表(users):存储所有用户的基本信息及其角色。
- 角色信息表(roles):定义系统中的各个角色,便于权限管理。
- 请假记录表(leave_requests):记录用户的请假信息,包括请假类型、原因、时间及审批状态。
- 权限控制表(permissions):用于控制不同角色的权限,确保权限的精细化管理。
通过这些核心数据表的设计,可以清晰地管理系统中的用户、角色、权限和请假记录,从而为开发高效且安全的请假管理系统奠定基础。