Проектирование базы данных для отдела организации и оплаты труда ОАО "Печатный двор"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
µниям в 3НФ неявно предполагалось, что все отношения содержат один потенциальный ключ. Это не всегда верно. Функциональная зависимость атрибутов утверждает лишь то, что для каждого конкретного состояния базы данных по значению одного атрибута (детерминанта) можно однозначно определить значение другого атрибута (зависимой части). Но конкретные значение зависимой части могут быть различны в различных состояниях базы данных. Если имеются отношения, содержащие несколько потенциальных ключей, то необходимо проверить, имеются ли функциональные зависимости, детерминанты которых не являются потенциальными ключами. Если такие функциональные зависимости имеются, то необходимо провести дальнейшую декомпозицию отношений. Те атрибуты, которые зависят от детерминантов, не являющихся потенциальными ключами выносятся в отдельное отношение вместе с детерминантами. Отношение находится в нормальной форме Бойса-Кодда (НФБК) тогда и только тогда, когда детерминанты всех функциональных зависимостей являются потенциальными ключами. Представляющие интерес для игрового центра "Вегас" дополнительные (неключевые) атрибуты.
Таблица 3 Таблица неключевых атрибутов
ФИОФамилия, имя отчество каждого работникаАдресАдрес места проживанияДомТелДомашний телефон работникаМобТелМобильный телефон работникаНомерРазрядаНомер разряда работникаПроцентПремииПрцент премии на окладВидОплатыВид оплаты труда работникаФИОДетейФамилия, имя, отчество детей работникаДатаРождДата рождения детей работникаМестоПроживМесто проживание детей работникаТабНомерТабельный номер работникаНаимДолжнНаименование должности работника ОтделНаименование отдела, за которым закреплен работникФормируется таблица окончательных отношений (см. Таблицу 4).
Таблица 4 Таблица окончательных отношений
Работники
Расценок
Процент премии
Личная информация
Сведения о детяхТабельный Номер, ФИО, Наименование Должности, Отдел, Вил Оплаты Труда, Номер Разряда.
Вид Оплаты, Номер Разряда, Расценок.
Номер Разряда, Процент Премии.
ФИО, Адрес, Дом Тел, Моб Тел, Дата Рождения.
ФИО, ФИО Детей, Дата Рождения, Место Проживания.
3. Создание БД в Access
В ходе создания базы данных были созданы такие таблицы, как: Служебная Информация (см. рис. 2); Личная Информация (см рис. 3); Сведения О Детях Сотрудника (см. рис. 4); Расценок (см. рис. 5); Процент Премии(см. рис. 6);
Рис. 2. Таблица Служебная Информация
Эта таблица необходима для учета всех работников на предприятии. Чтобы всегда можно было с легкостью посмотреть какой работник в каком отделе работает, какой разряд у работника.
Рис. 3. Таблица Личная Информация
Таблица в которой содержится полная информация о всех сотрудниках данного предприятия. Очень важно знать где проживает сотрудник, его телефоны, чтобы всегда можно было с ним связаться.
Рис. 4. Таблица Сведения О Детях Сотрудника
Эта таблица необходима для того, чтобы в дальнейшем можно было рассчитывать НДФЛ.
Рис. 5.Таблица Расценок
В этой таблице содержится информация о размерах окладов и тарифных ставках по разрядам.
Рис. 6. Таблица Процент Премии
Эта таблица нужна для того, чтобы четко видеть какому разряду соответствует определенный процент премии. Была сделана схема данных.
Рис. 7. Схема данных
Благодаря тому, что база данных состоит из отдельных таблиц, с установленными между ними связями, обеспечивается безопасность и конфиденциальность информации, а также обеспечивается удобство поиска нужной информации из массива данных.
4. Разработка запросов
- Запрос на выборку с условием отбора: работники по заданному разряду
SELECT СлужебнаяИнформация.ТабельныйНомер, СлужебнаяИнформация.ФамилияИмяОтчество, СлужебнаяИнформация.НомерРазряда
FROM СлужебнаяИнформация
WHERE (((СлужебнаяИнформация.НомерРазряда) Like [Нужный разряд]));Этот запрос необходим чтобы без лишних поисков посмотреть работников с одним и тем же разрядом.
- Запрос на выборку с группировкой: средняя заработная плата по должностям
SELECT Расценок.ВидОплаты, Avg(Расценок.Расценок) AS [Avg-Расценок], СлужебнаяИнформация.НаименованиеДолжности
FROM Расценок INNER JOIN СлужебнаяИнформация ON Расценок.НомерРазряда = СлужебнаяИнформация.НомерРазряда
GROUP BY Расценок.ВидОплаты, СлужебнаяИнформация.НаименованиеДолжности
HAVING (((Расценок.ВидОплаты)="оклад, премия"));
Этот запрос необходим для того, чтобы легко можно было посмотреть среднюю зарплату по должности.
- Запрос на выборку с расчетом: расчет премии по окладникам
SELECT СлужебнаяИнформация.ТабельныйНомер, СлужебнаяИнформация.ФамилияИмяОтчество, Расценок.ВидОплаты, Расценок.НомерРазряда, Расценок.Расценок, ПроцентПремии.ПроцентПремии, [Расценок]*[ПроцентПремии] AS Премия
FROM Расценок INNER JOIN (ПроцентПремии INNER JOIN СлужебнаяИнформация ON ПроцентПремии.НомерРазряда = СлужебнаяИнформация.НомерРазряда) ON (ПроцентПремии.НомерРазряда = Расценок.НомерРазряда) AND (Расценок.НомерРазряда = СлужебнаяИнформация.НомерРазряда)WHERE (((Расценок.ВидОплаты)="оклад, премия"));
Этот запрос необходим чтобы легко можно было рассчитать премию по каждому работнику с окладом. Иногда это бывает очень необходимо.
4. Запрос на выборку с расчетом: расчет премии по сдельщикам;
SELECT СлужебнаяИнфор