Существует несколько типов (моделей) организации БД: иерархический, сетевой, реляционный. В настоящее время наиболее распространенной является реляционная модель.
Понятие реляционный (англ. relation – отношение) связано с разработ-ками известного американского специалиста в области баз данных Е. Кодда. Эти модели характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.
Реляционная модель представляет собой организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:
- каждый элемент таблицы – один элемент данных;
- все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковые тип (числовой, символьный и т.д.) и длину;
- каждый столбец имеет уникальное имя;
- одинаковые строки в таблице отсутствуют;
- порядок следования строк и столбцов может быть произвольным.
Наиболее популярные СУБД (Paradox, FoxPro, Access, Base) основаны на использовании реляционной модели данных.
Реляционной таблицей можно представить информацию о студентах, обучающихся в вузе (табл. 61)
Таблица 61
№ личного дела | Фамилия | Имя | Отчество | Дата рождения | Группа |
Сергеев | Петр | Михайлович | 01.01.76 | ||
Петрова | Анна | Владимировна | 15.03.75 | ||
Анохин | Андрей | Борисович | 14.04.76 |
Таблицы БД в реляционных моделях называются отношениями, строки соответствуют записям, а столбцы – атрибутам отношений (полям). Поле, каждое значение которого однозначно определяет соответствующую запись, называется простым ключом (ключевым полем). Если записи можно однозначно определить только значениями нескольких полей, то такая таблица базы данных имеет составной ключ. В примере, показанном в табл. 61, простым ключевым полем таблицы является " № личного дела ". Чтобы связать две реляционные таблицы, необходимо ключ первой таблицы ввести в состав ключа второй таблицы (возможно совпадение ключей).
|
На рис. 18 показан пример реляционной модели, построенной на основе отношений (таблиц): СТУДЕНТ, СЕССИЯ, СТИПЕНДИЯ.
Таблицы, входящие в состав модели рис. 18, могут включать, например, следующие поля:
СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Пол, Дата рождения, Группа);
СЕССИЯ (Номер, Оценка1, Оценка2, Оценка3, Оценка4, Результат);
СТИПЕНДИЯ (Результат, Процент).
Рис. 18
Выделенные поля в описанных таблицах являются ключевыми. Поле Номер – это номер личного дела студента. Поле Результат – средний балл студента за сессию.
Таблицы СТУДЕНТ и СЕССИЯ имеют совпадающие ключи (Номер), что дает возможность легко организовать связь между ними. Таблица СЕССИЯ имеет первичный ключ Номер и содержит внешний ключ Результат, который обеспечивает ее связь с таблицей Стипендия.
Нормализация отношений
Одни и те же данные могут группироваться в таблицы (отношения) различными способами. Возможная организация различных наборов отношений должна быть рациональной, т.е. исключающей дублирование данных и упрощающей процедуры их обработки и обновления.
Нормализация отношений – формальный аппарат ограничений на фор-мирование отношений (таблиц), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение (ввод, корректировку) базы данных. Е. Коддом выделены три нормальные формы отношений и предложен механизм, позволяющий любое отношение преобразовать к третьей (самой совершенной) нормальной форме.
|
Первая нормальная форма
Отношение называется нормализованным или приведенным к первой нормальной форме, если все его атрибуты простые (далее неделимы). Преобразование отношения к первой нормальной форме может привести к увеличению количества реквизитов (полей) таблицы и изменению ключа.
Например, отношение Студент (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой нормальной форме. (Каждое поле однозначно описывает какую-то характеристику студента. Ни одно поле не требует дополнительных разъяснений). Отношение Студент1 (Номер, Фамилия, Имя, Отчество, Группа, Дети) не находится в первой нормальной форме, т.к. студент может иметь несколько детей и тогда об одном и том же студенте придется ввести в таблицу несколько записей. Например, пусть студент Иванов Иван Иванович, номер личного дела 11111 учится в 215 группе и имеет двоих детей – Максима и Ольгу. Тогда таблица с записью о нем будет иметь вид табл. 62.
Таблица 62
Номер | Фамилия | Имя студента | Отчество | Группа | Имя ребенка | Возраст ребенка |
Иванов | Иван | Иванович | Максим | |||
Иванов | Иван | Иванович | Ольга |
Чтобы привести отношение СТУДЕНТ1 к первой нормальной форме, нужно разбить эту таблице на две:
|
СТУДЕНТ1 (Номер, Фамилия, Имя, Отчество, Группа),
ДЕТИ (Номер, Имя ребенка, Возраст ребенка).
Теперь каждая из таблиц СТУДЕНТ1 и ДЕТИ не содержат повторной информации, т.е. БД приведена к первой нормальной форме.
Вторая нормальная форма
Чтобы рассмотреть вопрос приведения отношений ко второй нормальной форме, необходимо дать пояснения к таким понятиям, как функциональная зависимость и полная функциональная зависимость.
Функциональная зависимость реквизитов – зависимость, при которой в одном экземпляре информационного объекта определенному значению ключа соответствует только одно значение описательного реквизита. В случае составного ключа вводится понятие функционально полной зависимости. Функциональная полная зависимость неключевых атрибутов заключается в том, что каждый неключевой атрибут функционально зависит от ключа, но не находится в функциональной зависимости ни от какой части составного ключа.
Отношение будет находиться во второй нормальной форме, если оно находится в первой нормальной форме, и каждый неключевой атрибут функционально полно зависит от составного ключа.
Отношение Студент (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой и во второй нормальной форме одновременно, так как описательные реквизиты однозначно определены и функционально зависят от ключа Номер.
Отношение Успеваемость (Номер, Фамилия, Имя, Отчество, Дисциплина, оценка) находится в первой нормальной форме и имеет составной ключ Номер + Дисциплина. Это отношение не находится во второй нормальной форме, так как атрибуты Фамилия, Имя, Отчество не находится в полной функциональной зависимости с составным ключом отношения.
Чтобы привести это отношение ко второй нормальной форме, следует разбить его на два: Успеваемость (Номер, Фамилия, Имя, Отчество, Дисциплина) и Дисциплина (Дисциплина, Оценка).
Третья нормальная форма
Понятие третьей нормальной формы основывается на понятии нетранзитивной зависимости. Транзитивная зависимость наблюдается в том случае, если один из двух описательных реквизитов зависит от ключа, а другой описательный реквизит зависит от первого описательного реквизита. Отношение будет находиться в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Если в состав описательных реквизитов информационного объекта Студент включать фамилию старосты группы (Староста), которая определяется только номером группы, то одна и та же фамилия старосты будет многократно повторяться в разных экземплярах данного информационного объекта. В этом случае наблюдаются затруднения в корректировке фамилии старосты в случае назначения нового старосты, а также неоправданный расход памяти для хранения дублированной информации.
Для устранения транзитивной зависимости описательных реквизитов необходимо провести "расщепление" исходного информационного объекта. В результате расщепления часть реквизитов удаляется из исходного информационного объекта и включается в состав других (возможно, вновь созданных) информационных объектов.
"Расщепление" информационного объекта, содержащего транзитивную зависимость описательных реквизитов, показано на рис. 19. Как видно из рис.19, исходный информационный объект Студент группы представляется в виде совокупности правильно структурированных информационных объектов (Студент и Группа), реквизитный состав которых тождественен исходному объекту. Отношение Студент (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится одновременно в первой, второй и третьей нормальной форме.
Студент группы Студент Группа
Номер* Номер* Группа*
Фамилия Фамилия + Староста
Имя Имя
Отчество = Отчество
Дата Дата
Группа Группа
Староста
Рис. 19
Типы связей
Все информационные объекты предметной области связаны между собой. Различаются связи нескольких типов, для которых введены следующие обозначения:
- один к одному (1:1);
- один ко многим (1:М) или (1:∞);
- многие ко многим (М:М) или (∞:∞).
Рассмотрим эти типы связей на примере.
Дана совокупность информационных объектов, отражающих учебный процесс в вузе:
СТУДЕНТ (Номер, Имя, Отчество, Пол, Дата рождения, Группа),
СЕССИЯ (Номер, Оценка1, Оценка2, Оценка3, Оценка4, Результат),
СТИПЕНДИЯ (Результат, Процент),
ПРЕПОДАВАТЕЛЬ (Код преподавателя, Фамилия, Имя, Отчество).
Связь один к одному (1:1) предполагает, что в каждый момент времени одному экземпляру информационного объекта А соответствует не более одного экземпляра информационного объекта В и наоборот.
Рис. 20 иллюстрирует указанный тип отношений.
А1 В1
А2 А В
А3 В2
Рис. 20
Примером связи 1:1 может служить связь между информационными объектами СТУДЕНТ и СЕССИЯ:
СТУДЕНТ СЕССИЯ
Каждый студент имеет определенный набор экзаменационных оценок в сессию.
При связи один ко многим (1:М) одному экземпляру информационного объект А соответствует 0, 1 или больше экземпляров объекта В, но каждый экземпляр объекта В связан не более чем с 1 экземпляром объекта А. Графически данное соответствие имеет вид, представленный на рис. 21
А1 В1
А2 В2 А В
А3 В3
Рис. 21
Примером связи 1:М служит связь между информационными объектами СТИПЕНДИЯ и СЕССИЯ:
СТИПЕНДИЯ СЕССИЯ
Установленный размер стипендии по результатам сдачи сессии может повторяться многократно для различных студентов.
Связь многие со многими (М:М) предполагает, что в каждый момент времени одному экземпляру информационного объекта А соответствует 0, 1 или более экземпляров объекта В и наоборот.
На рис. 22 графически представлено указанное соответствие.
А1 В1
А1 В1
А1 В1
Рис. 22
Примером данного отношения служит связь между информационными объектами СТУДЕНТ и ПРЕПОДАВАТЕЛЬ:
СТУДЕНТ ПРЕПОДАВАТЕЛЬ
Один студент обучается у многих преподавателей, один преподаватель обучает многих студентов.