Git Product home page Git Product logo

course_project's Introduction

Разработка базы данных для информационный системы по учету кадров

Скриншот

Типовые запросы

Типовые Запросы

1. Вывести сотрдника, который получает больше всех в компании

SELECT employees.id, firstname, secondname, patronymic, depatments.title, salary_per_hour FROM employees
JOIN job_title ON job_title.id = employees.job_title_id
JOIN depatments ON depatments.id = job_title.depatments_id
ORDER BY salary_per_hour DESC
LIMIT 1;

2. Уволить сотрудника с именем 'Екатерина Владимирова Александровна', дата рождения '1993-08-20'

DELETE FROM employees
WHERE id = (SELECT * FROM (SELECT id FROM employees 
WHERE firstname = 'Екатерина' 
AND secondname = 'Владимирова' 
AND patronymic = 'Александровна' 
AND birthday = '1993-08-20') AS tmp);

3. Получить информацию о количестве отработанных часов за определенный период с 2024-04-01 до 2024-04-15. Сотрудника с именем 'Иван Иванов Иванович', а дата рождения '1990-01-01'

SELECT date, amount FROM time_tracking
WHERE employees_id = (SELECT id FROM employees 
WHERE firstname = 'Иван' 
AND secondname = 'Иванов' 
AND patronymic = 'Иванович' 
AND birthday = '1990-01-01')
AND date >= '2024-04-01' 
AND date <= '2024-04-15';

4. Вывести количество сотрудников по отделам

SELECT depatments.title, COUNT(*) FROM employees
JOIN job_title ON job_title.id = employees.job_title_id
JOIN depatments ON depatments.id = job_title.depatments_id
GROUP BY depatments.title;

5. Вывести среднюю заработную плату по отделам

SELECT depatments.title, AVG(salary_per_hour) FROM job_title
JOIN depatments ON depatments.id = job_title.depatments_id
GROUP BY depatments.title;

Хранимые процедуры

  1. Процедура добавления нового сотрудника
call AddEmployee('Егор', 'Рожков', 'Иванович', 'male', '1999-12-24', 'ул. Калинина 23', '89234657473', '[email protected]', '2024-05-23', '2818383232', '393689360719', '22342342333', '6546554', '6743456', 2);

Процедура добавит в таблицу employees имя Егор, фамилию Рожков, отчество Иванович, пол male, дата рождения 1999-12-24, адрес проживания ул. Калинина 23, номер телефона 89234657473, почту [email protected] и дата принятия, а в таблицу personal_documents добавит номер паспорта 2818383232, валижный ИНН 393689360719, снилс 22342342333, друдовая книжка 6546554, военный билет 6743456 и ID должности нового сотрудника 2

  1. Процедура формирования отчета по заработной плате за определенный период
   call SalaryReport(1, '2024-04-1', '2024-04-15');

Процедура принимает входные параметры: ID сотрудника 1, период с 2024-04-1 и период до 2024-04-15. Данная процедура считает количество отработанных часов за данный период и умножает на ставку сотрудника, а также добовляет в таблицу salary отчет: salary_date - ставит дату, когда была выполнена процедура, number_of_hours_worked - добавляет количетсво отработанных часов за период, а final_salary показывает заработную плату за данный период

Тригер

before_employee_delete осуществляет свою деятельность после удаления записи в таблицу employees, а именно, удаления связующей записи в таблице personal_documents

Функция

CheckINN вызывается хранимой процедурой, выполняет валидацию вводимого ИНН. Если ИНН валидный, то выведет True, а если нет, то False

Представление

SELECT * FROM detail_employees;

Это представление показывает основную информацию об сотрудниках

Роли

  1. Роль для руководителей отделов
CREATE ROLE IF NOT EXISTS LeaderUser;
GRANT SELECT ON course_work.employees TO LeaderUser;
GRANT SELECT ON course_work.job_title TO LeaderUser;
GRANT SELECT ON course_work.depatments TO LeaderUser;
GRANT SELECT, INSERT ON course_work.time_tracking TO LeaderUser;
  1. Роль младшего специалиста отдела кадров
CREATE ROLE IF NOT EXISTS JuniorSpecialist;
GRANT SELECT, INSERT ON course_work.employees TO JuniorSpecialist;
GRANT INSERT ON course_work.personal_documents TO JuniorSpecialist;
GRANT SELECT ON course_work.job_title TO JuniorSpecialist;
GRANT SELECT ON course_work.depatments TO JuniorSpecialist;
GRANT EXECUTE ON FUNCTION course_work.CheckINN TO JuniorSpecialist;
GRANT EXECUTE ON PROCEDURE course_work.AddEmployee TO JuniorSpecialist;
  1. Роль специалиста отдела кадров
CREATE ROLE IF NOT EXISTS Specialist;
GRANT SELECT, INSERT, UPDATE ON course_work.employees TO Specialist;
GRANT SELECT, INSERT, UPDATE ON course_work.personal_documents TO Specialist;
GRANT SELECT, INSERT, UPDATE ON course_work.job_title TO Specialist;
GRANT SELECT, INSERT, UPDATE ON course_work.depatments TO Specialist;
GRANT SELECT ON course_work.time_tracking TO Specialist;
GRANT SELECT, INSERT ON course_work.salary TO Specialist;
GRANT EXECUTE ON FUNCTION course_work.CheckINN TO Specialist;
GRANT EXECUTE ON PROCEDURE course_work.AddEmployee TO Specialist;
GRANT EXECUTE ON PROCEDURE course_work.SalaryReport TO Specialist;

course_project's People

Contributors

n0maci avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.