Database
 sql >> база данни >  >> RDS >> Database

Как да съхранявате графиците на служителите в база данни

Ниво:Начинаещ

Толкова много организации са изправени пред общия проблем със съхраняването на графиците на служителите. Без значение коя институция:компания, университет или просто физическо лице, много субекти се нуждаят от приложение, за да преглеждат графиците. Затова ще се опитам да измисля модел на база данни и след това, в една бъдеща статия, ще говорим за просто приложение за съхраняване на графиците на служителите в база данни.

В момента дизайнът изглежда по следния начин:

Моделът е доста ясен.

Съвет – Естествени и сурогатни ключови стратегии

  1. Използвайте сурогатен първичен ключ винаги, когато стойностите в естествения ключ могат да се променят или когато естественият ключ би бил твърде сложен.
  2. Ако естествен кандидат ключ се състои от малък брой колони (в идеалния случай само една) и стойностите му не се променят – използвайте го като естествен първичен ключ

Научете повече относно естествените и сурогатните първични ключове.

employee таблицата съдържа основни атрибути, описващи всеки служител, например:име, фамилия, адрес и телефонен номер. Името и фамилията не идентифицират уникално всеки запис (може да има повече от един човек със същото име и фамилия), ето защо беше въведена нова колона (id ), наречен сурогатен ключ .

schedule таблицата съдържа дните и часовете, когато всеки служител е на работа. work_date колоната посочва ден, в който всеки служител е работил. start_work_hour и end_work_hour колони идентифицират работното време за този ден.

Да предположим, че имаме служител на име Питър. Той беше на работа на 4 февруари и отбелязва началния и крайния си час в графика.

Съответният ред в schedule таблицата изглежда така:


id employee_id работна_дата начален_работен_час краен_работен_час е_празник е_уикенд
1 1 04.02.2015 10 16 0 0


Докато изграждаме такава система, може да искаме да знаем кой е работил най-много нощи или кой е работил най-много уикенди/празнични дни. За да генерирате отчети, които съдържат такава информация, колони is_holiday и is_weekend бяха въведени.

Използвайки този подход, ще трябва да имате отделна таблица за празниците, която съдържа датите на празниците за компанията. Когато служител въведе работното си време, колоните is_holiday и is_weekend може да се актуализира с помощта на тригер. След като постави датата и часа, тригерът ще провери дали датата е празник или уикенд и ще вмъкне правилната стойност в полето.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преброяване на препратки към запис в таблица чрез външни ключове

  2. Работа с JavaFX UI и JDBC приложения

  3. Схемата на снежинката

  4. ML{.NET} Въведение

  5. Python REST API с Flask, Connexion и SQLAlchemy – част 2