Сущность - объект любой природы данные, о котором хранятся в отношении (таблице, в которой содержатся данные).
В рассматриваемой предметной области можно выделить следующие сущности:
1. СОТРУДНИКИ -содержит информацию о дате рождения, месте проживания, составе семьи сотрудника и т.д.
2. ОТПУСК – содержит информацию о дате ухода в отпуск, на какое количество дней и т.д.
3. БОЛЬНИЧНЫЙ – содержит ту же информацию что и отпуск, включая пункт дополнительный отпуск в связи с болезнью.
4. ПОВЫШЕНИЕ КВАЛИФИКАЦИИ (ПЕРЕВОД) - содержит информацию о причине перевода (в данном случае прохождение курсов повышения квалификации), прежнее и новое место работы и т.д.
5. КОМАНДИРОВАКА – содержит информацию о месте назначения, сроки и цели отправления в командировку.
6. ТРУДОВОЙ ДОГОВОР – содержит информацию о том, когда и на какую должность был принят сотрудник, его надбавки и т.д.
7. ТАБЕЛЬ РАБОЧЕГО ВРЕМЕНИ – содержит информацию о количестве отработанных дней, выходных, командировок, больничных и т.д.
Перечисленные выше сущности содержат различные атрибуты. Атрибут – свойство сущности (заголовок столбца таблицы).
Перечислим атрибуты вышеназванных сущностей:
СОТРУДНИКИ (Табельный номер сотрудника, ФИО сотрудника, занимаемую должность, стаж работы, номер паспорта, ИНН, состав семьи, дату рождения, место проживания по паспорту, фактическое место проживания, телефон, образование).
ТРУДОВОЙ ДОГОВОР (наименование фирмы, номер приказа, дату составления приказа, дату принятия на работу, ФИО сотрудника, табельный номер сотрудника, структурное подразделение, должность, оклад, надбавки за совмещение должностей, надбавки за работу на крайнем севере, основание принятия на работу).
ОТПУСК (наименование фирмы, номер приказа об уходе в отпуск, дату составления приказа, структурное подразделение, ФИО сотрудника, табельный номер сотрудника, структурное подразделение, период работы, основной отпуск, дополнительный отпуск, количество дней, период к оплате).
БОЛЬНИЧНЫЙ (наименование фирмы, номер приказа, ФИО сотрудника, табельный номер сотрудника, структурное подразделение, занимаемую должность, основной отпуск, дополнительный отпуск в связи с болезнью, пункт «отпуск исчислять», пункт «всего отпуск»).
ПОВЫШЕНИЕ КВАЛИФИКАЦИИ (ПЕРЕВОД) (номер приказа об переводе, табельный номер сотрудника, ФИО сотрудника, пункт «вид перевода», прежнее место работы, новое место работы, основание перевода).
КОМАНДИРОВКИ (номер приказа об отправлении сотрудника в командировку, табельный номер сотрудника, ФИО сотрудника, структурное подразделение, занимаемую должность, место назначения, срок и цель командировки, пункт «за счет средств»).
ТАБЕЛЬ РАБОЧЕГО ВРЕМЕНИ (номер сотрудника, должность, количество отработанных дней, количество фактически отработанных дней, количество выходных, командировки, отпуска, больничные).
УВОЛЬНЕНИЕ (номер приказа об увольнении сотрудника из фирмы, дату составления приказа, дату увольнения, табельный номер сотрудника, структурное подразделение, занимаемую должность, основание, пункт «к оплате»).
Инфологическая модель должна включать такое формализованное описание предметной области, которое легко будет "читаться" не только специалистами по базам данных.
Инфологическое проектирование, прежде всего, связано с попыткой представления семантики предметной области в модели БД. Реляционная модель данных в силу своей простоты и лаконичности не позволяет отобразить семантику, то есть смысл предметной области.
Проблема представления семантики давно интересовала разработчиков, и в семидесятых годах было предложено несколько моделей данных, названных семантическими моделями. К ним можно отнести семантическую модель данных, предложенную Хаммером (Hammer) и Мак-Леоном (McLeon) в 1981 году, функциональную модель данных Шипмана (Shipman), также созданную в 1981 году, модель "сущность—связь", предложенную Ченом (Chen) в 1976 году, и ряд других моделей. У всех моделей были свои положительные и отрицательные стороны, но испытание временем выдержала только последняя. И в настоящий момент именно модель Чена "сущность—связь", или "Entity Relationship", стала фактическим стандартом при инфологическом моделировании баз данных.
Модель «сущность-связь» называют также «ER-моделью» (essence-сущность, relation-связь). [11. стр. 147].
Модель к данной БД представлена в Приложении А.
При проектирование БД информацию обычно размещают в нескольких таблицах. Таблицы при этом связывают с семантикой информации. В реляционной СУБД для указания связей в таблице производят операции их связывания. Рассмотрим наиболее часто встречаемые бинарные связи:
1. Связи вила 1:1 образуется в случае, когда все поля записи основной таблицы и дополнительной таблицы являются ключевыми.
2. Связь 1:М может быть в случае, когда одной записи основной таблицы соответствует несколько записей дополнительной таблицы.
3. Связь М:1 может быть тогда, когда нескольким записям основной таблицы ставится в соответствии одна запись дополнительной.
4. Связь М:М возникает в том случае когда нескольким записям основной таблицы соответствует несколько записей дополнительной. В реляционной БД связь М:М реализуется через дополнительные таблицы.
Рассмотрим связи между выявленными сущностями:
1. Между атрибутами сотрудники и трудовой договор будет связь 1:1, так как сотрудник с данной фирмой заключает трудовой договор всего один раз.
2. Между атрибутами сотрудники и командировка будет связь 1:М, так как сотрудник может сколько угодно раз ездить в командировки.
3. Между атрибутами сотрудники и больничный будет связь 1:М, так как сотрудник может сколько угодно раз уходить на больничный.
4. Меж атрибутами сотрудники и отпуск будет связь 1:М, так как сотрудник может сколько угодно раз ходить в отпуск.
5. Между атрибутами сотрудники и курсы повышения квалификации (перевод) будет связь 1:М, так как сотрудник может проходить курсы повышения квалификации сколько угодно раз.
6. Между атрибутами сотрудники и увольнение будет связь 1:1, так сотрудник может уволиться только один раз.
7. Между атрибутами сотрудники и табель рабочего времени будет связь 1:1, так как одному сотруднику соответствует только одна запись каждого месяца в табеле.
Реляционная модель баз данных была предложена сотрудником фирмы IBM Э. Кодом в начале 70-х годов. Будучи математиком, он предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность и Декартово произведение). Он показал, что любое представление данных сводится к совокупности двумерных таблиц особого вида, известных в математике как отношения.
Одна из главных идей заключается в том, что связи между данными должны устанавливаться в соответствии с их внутренними логическими взаимоотношениями. В реляционной модели одной командой могут обрабатываться целые файлы.
Реляционная БД представляет собой информацию об объекте, представленную в виде двумерного массива - таблицы объеденных определен
ными связями.
Атрибут значение, которого идентифицируется кортежами (строками таблицы) называется ключом. Отношение может содержать и несколько ключей, один из которых объявляется первичным. Первичные ключи не могут обновляться. Все прочие ключи отношений являются возможными ключами.
Если в отношении кортеж идентифицируется соединением значений нескольких атрибутов, то такой ключ называется составным.
Атрибут представляющие собой копии ключей других отношений называется внешним ключом. Реляционная модель накладывает на внешние ключи ограничения для обеспечения целостности данных. Это означает, что к каждому значению внешнего ключа должны соответствовать строки в связываемых отношениях.
В разрабатываемой БД сущность табельный номер сотрудника будет являться ключом для атрибутов сотрудники, отпуск, увольнение, командировка, трудовой договор и повышение квалификации (перевод).
Атрибут сотрудники так же имеет уникальные поля, такие как номер паспорта и ИНН, но номер паспорта не может быть ключом, так как номер паспорта может меняться, а ИНН может являться ключевым, но нам удобнее использовать как ключ табельный номер.
Для атрибута табель рабочего времени ключом будет являться две сущности, номер сотрудника и период, то есть ключ будет составным.
Нормализация – разбиение таблицы на две или более, обладающие лучшими свойствами включении, изменении или удалении данных. окончательная цель нормализации сводится к получению такого проекта БД в котором каждый факт появляется лишь в одном месте, то есть исключена избыточность информации.
Нормализация отношений – формальный аппарат ограничений, на формирование отношений которого позволяет устранить дублирование, обеспечить непротиворечивость хранимых в базе данных, уменьшить трудозатраты на ведение БД.
Кодом выведено три нормальные формы и предложен механизм, позволяющий любое отношение преобразовать к третей нормальной форме. Приведем наши отношения к третей нормальной форме.
Первая НФ: Отношение называется нормализованным или приведенным к первой нормальной форме тогда и только тогда, когда все его атрибуты простые (неделимые). Таблица находится в первой нормальной форме тогда и только тогда, когда ни одна из ее строк не содержит в любом ее поле более одного значения, и не одно из ее ключевых полей не пусто. Для того чтобы привести наши отношения к первой нормальной форме надо сущность ФИО разбить на три отдельные (Фамилия, Имя, Отчество). Так же следует вынести в отдельную таблицу структурное подразделение, должности и наименование фирмы, чтобы не допустить избыточности данных. В отдельную таблицу выносятся приказы по личному составу и производственные приказы, так как нумерация у приказов общая. Атрибуты место проживания по паспорту и фактическое место проживания не требуют разбиения так как используются один раз.