
- •Реляционная модель данных
- •Содержание
- •Раздел 1. Теория реляционных баз данных 9
- •Раздел 2. Проектирование реляционных баз данных на основе принципов нормализации 39
- •Раздел 3. Лабораторная работа 58
- •Введение
- •Раздел 1. Теория реляционных баз данных
- •1.1. Основные понятия реляционных баз данных
- •Виды связей реляционных баз данных
- •1.2. Реляционная алгебра и реляционное исчисление
- •Операции реляционной алгебры. Формулы исчисления кортежей
- •Проекция. Проекцией отношения а по атрибутам X, y,..., z, где каждый из атрибутов принадлежит отношению а.
- •Extend Группа add (2011-ГодПоступления) as Курс
- •Контрольные вопросы по разделу 1
- •Контрольное задание по разделу 1
- •Примерные задания для подготовки к тестированию в системе Moodle по материалу раздела 1
- •Раздел 2. Проектирование реляционных баз данных на основе принципов нормализации
- •2.1 Целостность баз данных. Ограничения целостности.
- •3. Ограничения, связанные с коллективным доступом к бд.
- •2.2 Теория нормальных форм
- •Первая нормальная форма (1нф)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (знф)
- •2.3 Избыточное дублирование данных и аномалии.
- •Контрольные вопросы по разделу 2
- •Контрольное задание по разделу 2
- •Примерные задания для подготовки к тестированию в системе Moodle по материалу раздела 2
- •Раздел 3. Лабораторная работа Основы проектирования реляционных баз данных Разработка структуры базы данных
- •Практическое руководство: создание логической и физической моделей с помощью Microsoft Visio 2007
- •Нотация idef1x
- •Контрольные вопросы по разделу 3:
- •Глоссарий
- •Список литературы
Виды связей реляционных баз данных
При проектировании реальных БД информацию обычно размещают в нескольких таблицах. Таблицы при этом связаны семантикой информации. В реляционных СУБД для указания связей таблиц производят операцию их связывания.
Связь – это логическое отношение между сущностями, выражающее некоторое ограничение или правило. В РМД вводится понятие реляционной связи – это связь между кортежами, основанная на совпадении значений атрибутов, по которым устанавливается связь. В реляционной базе данных связи позволяют избежать избыточности данных.
Связь – ассоциирование двух или более сущностей. Одно из основных требований к организации базы данных – это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. Связь осуществляется путем сопоставления данных в ключевых столбцах; обычно это столбцы, имеющие в обеих таблицах одинаковые названия. В большинстве случаев сопоставляются первичный ключ одной таблицы, содержащий для каждой из строк уникальный идентификатор, и внешний ключ другой таблицы.
Между двумя сущностям, например, А и В возможны три вида связей:
ОДИН-К-ОДНОМУ (1:1), т.е. в каждый момент времени каждому представителю (экземпляру) сущности А соответствует 1 или 0 представителей сущности В.
При установлении связи «один к одному» каждой строке таблицы А может соответствовать только одна строка таблицы B и наоборот. Связь «один к одному» создается в том случае, когда оба связанные столбца являются первичными ключами или на них наложены ограничения уникальности.
Этот вид связи используется редко, поскольку в такой ситуации связываемые данные обычно можно хранить в одной таблице. Использовать связь вида «один к одному» можно в указанных ниже случаях:
чтобы разделить таблицу, содержащую слишком много столбцов;
чтобы изолировать часть таблицы по соображениям безопасности;
для хранения данных кратковременного использования, удалить которые проще всего путем очистки таблицы;
для хранения данных, имеющих отношение только к подмножеству основной таблицы;
ОДИН-КО-МНОГИМ (1:М), т.е. одному представителю сущности А соответствуют 0, 1 или несколько представителей сущности В.
Связь «один ко многим» - наиболее распространенный вид связи. При такой связи каждой строке таблицы А может соответствовать множество строк таблицы В, однако каждой строке таблицы В может соответствовать только одна строка таблицы А.
Связь «один ко многим» создается в том случае, когда только на один из связываемых столбцов наложено ограничение уникальности или он является первичным ключом.
МНОГИЕ-КО-МНОГИМ (М:N). При установлении связи «многие ко многим» каждой строке таблицы А может соответствовать множество строк таблицы B и наоборот. Такая связь создается при помощи третьей таблицы, называемой соединительной, первичный ключ которой состоит из внешних ключей, связанных с таблицами А и B. Подробные характеристики связей и примеры представлены в таблице 1.2.
Таблица 1.2 – Характеристика типов связей между отношениями в реляционной модели данных
Тип связи |
Характеристика |
1:1 |
каждая запись родительской таблицы связана только с одной записью дочерней. Такая связь встречается на практике намного реже, чем отношение один ко многим и реализуется путем определения уникального внешнего ключа. Связь один к одному используют, если не хотят, чтобы таблица «распухала» от большого числа полей. |
1:М |
каждая запись родительской таблицы связана с одной или несколькими записями дочерней. Например, один клиент может сделать несколько заказов, однако несколько клиентов не могут сделать один заказ. Связь один ко многим является самой распространенной для реляционных баз данных |
М:N |
несколько записей одной таблицы связаны с несколькими записями другой. Например, один автор может написать несколько книг и несколько авторов — одну книгу. В случае такой связи в общем случае невозможно определить, какая запись одной таблицы соответствует выбранной записи другой таблицы, что делает неосуществимой физическую (на уровне индексов и триггеров) реализацию такой связи между соответствующими таблицами. Поэтому перед переходом к физической модели все связи «многие ко многим» должны быть переопределены (некоторые CASE-средства, если таковые используются при проектировании данных, делают это автоматически). Подобная связь между двумя таблицами реализуется путем создания третьей таблицы и реализации связи типа «один ко многим» каждой из имеющихся таблиц с промежуточной таблицей |
Наиболее используемой является связь 1:М. Стоит отметить, что отношение (таблицу), которое стоит в связи со знаком 1 называют главной, родительской или основной таблицей, а отношение в стороне многие – подчиненной, дочерней или дополнительной. При установлении связи между таблицами связанные поля не обязательно должны иметь одинаковые названия.
Связи между таблицами в реляционных БД устанавливаются с помощью первичных и внешних ключей. Пусть в отношении А имеется не ключевой атрибут P, значения которого являются значениями ключевого атрибута R другого отношения B. Тогда говорят, что атрибут P отношения A есть внешний ключ.
Приведем пример создания связи 1:М между двумя отношениями «Студент» и «Группа» (рисунок 1.3).
Рисунок 1.3 – Создание связи 1:М
Как видно из рисунка 1.3 до создания связи в сущность «Студент» атрибут «Номер_группы» не входит. После установления связи типа 1:М в подчиненной сущности «Студент» появляется атрибут «Номер_группы», который соответствует первичному ключу сущности «Группа» и является внешним ключом (FK).
Положительный эффект от использования связей между отношениями в БД:
контроль целостности вводимых в базу данных в соответствии с установленными связями, это повышает достоверность хранимой в БД информации;
снижение избыточности данных, так как исчезает необходимость хранения одной и той же информации в разных записях таблицы;
облегчение доступа к данным. Связывание таблиц при выполнении таких операций как поиск, просмотр, редактирование, выборка и подготовка отчетов обычно обеспечивает возможность обращения к, произвольным полям связанных записей. Это уменьшает количество явных обращений к таблицам данных и число манипуляций в каждой из них.