【具体场景实践】使用存储过程查数据全流程+自动调度

场景设计

场景描述:公司员工管理系统

公司需要管理员工的晋升和调薪,要求如下:

  1. 员工表 (employees) 记录员工的基本信息、工资、入职时间、部门等。
  2. 薪资历史表 (salary_history) 记录员工的薪资变更情况。
  3. 晋升记录表 (promotion_history) 记录员工的晋升情况。

需求

  • 定期评估员工,符合晋升条件的自动晋升并加薪
    • 入职 满2年当前职位不是最高级 的员工,有50% 概率晋升
    • 晋升后工资增加 15%-25%(随机)。
    • 晋升失败但工作满3年,工资 上涨 10%
  • 所有变更都需记录在历史表中
  • 使用动态 SQL 以支持不同部门的不同晋升规则。

1. 创建数据库和表

CREATE DATABASE IF NOT EXISTS company_db;
USE company_db;

-- 部门表
CREATE TABLE departments (
    dept_id INT AUTO_INCREMENT PRIMARY KEY,
    dept_name VARCHAR(50) UNIQUE NOT NULL
);

-- 员工表
CREATE TABLE employees (
    emp_id INT AUTO_INCREMENT PRIMARY KEY,
    emp_name VARCHAR(50) NOT NULL,
    dept_id INT,
    position VARCHAR(50),
    salary DECIMAL(10,2),
    hire_date DATE,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

-- 薪资历史表
CREATE TABLE salary_history (
    record_id INT AUTO_INCREMENT PRIMARY KEY,
    emp_id INT,
    old_salary DECIMAL(10,2),
    new_salary DECIMAL(10,2),
    change_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (emp_id) REFERENCES employees(emp_id)
);

-- 晋升历史表
CREATE TABLE promotion_history (
    record_id INT AUTO_INCREMENT PRIMARY KEY,
    emp_id INT,
    old_position VARCHAR(50),
    new_position VARCHAR(50),
    promotion_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (emp_id) REFERENCES employees(emp_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚务必早点睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值