Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РМД.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
6.66 Mб
Скачать

Виды связей реляционных баз данных

При проектировании реальных БД информацию обычно размещают в нескольких таблицах. Таблицы при этом связаны семантикой информации. В реляционных СУБД для указания связей таблиц производят операцию их связывания.

Связь – это логическое отношение между сущностями, выражающее некоторое ограничение или правило. В РМД вводится понятие реляционной связи – это связь между кортежами, основанная на совпадении значений атрибутов, по которым устанавливается связь. В реляционной базе данных связи позволяют избежать избыточности данных.

Связь – ассоциирование двух или более сущностей. Одно из основных требований к организации базы данных – это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. Связь осуществляется путем сопоставления данных в ключевых столбцах; обычно это столбцы, имеющие в обеих таблицах одинаковые названия. В большинстве случаев сопоставляются первичный ключ одной таблицы, содержащий для каждой из строк уникальный идентификатор, и внешний ключ другой таблицы.

Между двумя сущностям, например, А и В возможны три вида связей:

ОДИН-К-ОДНОМУ (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).

Положительный эффект от использования связей между отношениями в БД:

  • контроль целостности вводимых в базу данных в соответствии с установленными связями, это повышает достоверность хранимой в БД информации;

  • снижение избыточности данных, так как исчезает необходимость хранения одной и той же информации в разных записях таблицы;

  • облегчение доступа к данным. Связывание таблиц при выполнении таких операций как поиск, просмотр, редактирование, выборка и подготовка отчетов обычно обеспечивает возможность обращения к, произвольным полям связанных записей. Это уменьшает количество явных обращений к таблицам данных и число манипуляций в каждой из них.