Фамилия
Таб_номер
Адрес
Текущая_зарплата
Дата_найма
история_карьеры *
Должность
Дата_изменения
история_зарплаты *
Зарплата
Дата_изменения
На следующем шаге осуществляется упрощение схемы за счет устранения избыточности.
Действительно, «текущая_зарплата» всегда является последней записью в «история_зарплата», а «дата_найма»по сути дела всегда содержится в разделах «история_зарплаты» и «история_карьеры». Кроме того, несколько дат в последних разделах одни и те же, поэтому целесообразно создать на их основе единую структуру «история_зарплаты_карьеры» и вводить в нее данные при изменении должности и/или зарплаты. Результатом приведенного рассуждения может быть схема:
Фамилия
Таб_номер
Адрес
история_зарплаты_карьеры *
Зарплата
Должность
Дата_изменения
Следующий шаг – упрощение схемы при помощинормализации(удаления повторяющихся элементов). Основным способом нормализации является расщепление данной схемы на две схемы, являющиеся более простыми. Первая схема будет содержать фамилию и адрес (которые, как правило, не меняются), вторая – каждое изменение зарплатыи должности. Кроме того, каждая схема должна содержать «таб_номер»– единственный элемент данных, уникально идентифицирующий каждого сотрудника. Данные схемы и представляют те сущности, которые должны быть представлены в хранилище данных о персонале с учетом их связей и отношений.
Для идентификации сущностей определим ключевые атрибуты. Для первой схемы ключевым атрибутом является «таб_номер», для второй – ключом является совокупность атрибутов «таб_номер» и «дата_изменения», т.к. для каждого сотрудника возможно несколько записей в разделе «история_зарплаты_карьеры». Таким образом, хранилище данных о персонале содержит две сущности (рис. 3.18), которые в общепринятом виде могут быть представлены следующим образом:
Сотрудник (таб_номер, фамилия, адрес)