Составление исходной таблицы
ЛАБОРАТОРНАЯ РАБОТА №12
ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННОЙ БАЗЫ ДАННЫХ
Цель работы: создать логическую модель базы данных.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
База данных (БД)– систематизированная, логически взаимосвязанная информация, относящаяся к определенной предметной области.
Способ организации данных в базе называется моделью данных. Наибольшее распространение имеет реляционная модель. В реляционной модели объекты предметной области и взаимосвязи между ними представляются с помощью таблиц, связанных между собой. Каждая строка таблицы, содержащая значения свойств определенного объекта, называется записью, каждый столбец таблицы, содержащий значения определенного свойства, – полем. Все таблицы реляционной БД должны иметь ключевое поле (первичный ключ) – поле (или несколько полей) таблицы с уникальными (неповторяющимися) значениями, позволяющими однозначно идентифицировать запись.
Разработка таблиц является одним из наиболее сложных этапов проектирования реляционной БД. Важным требованием, предъявляемым к таблицам реляционной модели, является нормализация данных – исключение их избыточного дублирования. Если в таблице существуют повторяющиеся данные, то их следует переместить в другую таблицу, причем новая таблица называется главной, а исходная – подчиненной. В главной таблице нужно определить первичный ключ и связать ее с подчиненной таблицей по этому ключу. В подчиненной таблице поле (или несколько полей), по которым происходит связь с первичным ключом главной таблицы, называется внешним (вторичным) ключом.
Между таблицами реляционной БД устанавливают 3 типа связи:
· 1:1 (один к одному). Значению первичного ключа главной таблицы соответствует единственное значение вторичного ключа подчиненной таблицы. И наоборот, значению вторичного ключа подчиненной таблицы соответствует единственное значение первичного ключа главной таблицы. Таблицы с данным типом связи можно объединить.
· 1:М (один ко многим). Значению первичного ключа главной таблицы может соответствовать несколько значений вторичного ключа подчиненной таблицы. Но значению вторичного ключа подчиненной таблицы соответствует единственное значение первичного ключа главной таблицы.
· М:М (многие ко многим). Значению первичного ключа главной таблицы может соответствовать несколько значений вторичного ключа подчиненной таблицы. И наоборот, значению вторичного ключа подчиненной таблицы может соответствовать несколько значений первичного ключа главной таблицы. При данном типе связи между таблицами нужно создать дополнительную таблицу, содержащую ключевые поля исходных таблиц и связанную с ними типом связи 1:М.
После определения числа таблиц, их структуры и типов связи между ними строится логическая модель базы данных.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Задание: Спроектировать реляционную базу данных Кадры для хранения информации о кадровом составе предприятия.
База данных должна хранить следующую информацию:
1. ФИО сотрудника, его адрес, номер телефона и дату рождения.
2. Название и номер телефона отдела.
3. Должность и должностную ставку.
4. Стаж, индивидуальный коэффициент и оклад сотрудника.
Выполнение задания
Составление исходной таблицы
Определяем поля исходной таблицы, содержащей всю необходимую информацию, и присваиваем ей имя ШТАТЫ (рис. 12.1). Ключевым полем в данной таблице будет являться поле Табельный номер, так как здесь содержатся уникальные значения и по каждому из этих значений можно однозначно определить сотрудника и всю информацию о нем.
Рисунок 12.1 – Исходная таблица с данными
Составленная таблица будет иметь избыточное дублирование данных. Избыточность заключается в том, что для сотрудников, работающих в одном отделе, будет повторяться номер телефона отдела и для тех, кто занимает одинаковые должности нужно вводить одинаковые должностные ставки. Причем, если номер телефона отдела изменится, это изменение нужно будет ввести для всех сотрудников этого отдела, иначе будет иметь место противоречие в данных. Средством исключения избыточности данных является их нормализация.
Нормализация данных
Повторяющиеся данные следует переместить в новую таблицу. Составляем таблицу ОТДЕЛЫ, которая содержит поля Название отдела и Телефон отдела (рис. 12.2). Таблица ОТДЕЛЫ является главной, а ШТАТЫ – подчиненной. В главной таблице ОТДЕЛЫ определим ключевое поле. Так как возможны такие ситуации, при которых разные отделы могут иметь одинаковые названия или один номер телефона, то ни Название отдела, ни Телефон отдела не являются ключевым полем. Следует добавить поле, которое будет служить идентификатором, – Код отдела. Для связи таблиц поле Код отдела должно содержаться и в подчиненной таблице ШТАТЫ, где оно будет являться внешним ключом.
Рисунок 12.2 – Нормализация данных
Аналогично получаем новую таблицу ДОЛЖНОСТИ с полями Должность, Ставка и ключевым полем Код должности (рис. 12.3). Полученные таблицы удовлетворяют требованиям нормализации данных, так как в них отсутствует избыточное дублирование. При такой организации данных в таблицах в случае изменения информации нужно будет изменить только одну запись.
Рисунок 12.3 – Нормализованные данные
Определение типов связи между таблицами
Рассмотрим таблицы ОТДЕЛЫ и ШТАТЫ. Ключевому полю Код отдела главной таблицы ОТДЕЛЫ соответствует несколько значений вторичного ключа Код отдела подчиненной таблицы ШТАТЫ, т.к. в одном отделе работают несколько сотрудников. На связи таблиц отмечаем М возле подчиненной таблицы ШТАТЫ (рис. 12.4). А вторичному ключу Код отдела подчиненной таблицы ШТАТЫ соответствует единственное значение первичного ключа Код отдела главной таблицы ОТДЕЛЫ, т.к. один сотрудник может работать только в одном отделе. На связи таблиц отмечаем 1 возле главной таблицы ОТДЕЛЫ. Таким образом, между таблицами ОТДЕЛЫ и ШТАТЫ тип связи 1:М.
Аналогично установим тип связи между таблицами ДОЛЖНОСТИ и ШТАТЫ. Получена логическая модель базы данных.
Рисунок 12.4 – Логическая модель базы данных
Задание для самостоятельного выполнения
Согласно варианту индивидуального задания построить логическую модель БД.