Ниво:Начинаещ
Толкова много организации са изправени пред общия проблем със съхраняването на графиците на служителите. Без значение коя институция:компания, университет или просто физическо лице, много субекти се нуждаят от приложение, за да преглеждат графиците. Затова ще се опитам да измисля модел на база данни и след това, в една бъдеща статия, ще говорим за просто приложение за съхраняване на графиците на служителите в база данни.
В момента дизайнът изглежда по следния начин:
Моделът е доста ясен.
Съвет – Естествени и сурогатни ключови стратегии
- Използвайте сурогатен първичен ключ винаги, когато стойностите в естествения ключ могат да се променят или когато естественият ключ би бил твърде сложен.
- Ако естествен кандидат ключ се състои от малък брой колони (в идеалния случай само една) и стойностите му не се променят – използвайте го като естествен първичен ключ
Научете повече относно естествените и сурогатните първични ключове.
employee
таблицата съдържа основни атрибути, описващи всеки служител, например:име, фамилия, адрес и телефонен номер. Името и фамилията не идентифицират уникално всеки запис (може да има повече от един човек със същото име и фамилия), ето защо беше въведена нова колона (id
), наречен сурогатен ключ .
schedule
таблицата съдържа дните и часовете, когато всеки служител е на работа. work_date
колоната посочва ден, в който всеки служител е работил. start_work_hour
и end_work_hour
колони идентифицират работното време за този ден.
Да предположим, че имаме служител на име Питър. Той беше на работа на 4 февруари и отбелязва началния и крайния си час в графика.
Съответният ред в schedule
таблицата изглежда така:
id | employee_id | работна_дата | начален_работен_час | краен_работен_час | е_празник | е_уикенд |
1 | 1 | 10 | 16 | 0 | 0 |
Докато изграждаме такава система, може да искаме да знаем кой е работил най-много нощи или кой е работил най-много уикенди/празнични дни. За да генерирате отчети, които съдържат такава информация, колони is_holiday
и is_weekend
бяха въведени.
Използвайки този подход, ще трябва да имате отделна таблица за празниците, която съдържа датите на празниците за компанията. Когато служител въведе работното си време, колоните is_holiday
и is_weekend
може да се актуализира с помощта на тригер. След като постави датата и часа, тригерът ще провери дали датата е празник или уикенд и ще вмъкне правилната стойност в полето.