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

4.4.4Связи между отношениями (таблицами)

Обычно база данных представляет собой набор связанных таблиц. Связывание таблиц дает следующие преимущества:

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

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

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

Связь «один-ко-многим» означает, что одной записи в родительской таблице может соответствовать несколько записей (в том числе и одна) в дочерней таблице. В родительской таблице могут быть записи, для которых в данный момент нет соответствующих записей в дочерней таблице. Различают также жесткую связь «один-ко-многим», когда каждой записи в родительской таблице должны соответствовать записи в дочерней таблице.

Связь «один-ко-многим» является самой распространенной для реляционных баз данных. Пример связи: таблицы «Студенты» и «Экзамены» могут быть связаны связью «один-ко-многим» по полю «Номер Зачетки». Данная связь будет означать, что одна запись о студенте из таблицы «Студенты» может быть связана с несколькими записями о сдаче экзаменов данным студентом в таблице «Экзамены».

Связь «один-к-одному» имеет место, когда одной записи в родительской таблице соответствует только одна запись в дочерней таблице. Данная связь встречается редко и означает, что информация из двух таблиц могла бы быть объединена в одну. Наличие двух таблиц говорит о желании разделить основную и второстепенную информацию на два отношения. Например, информация о студентах может быть разделена на две таблицы «Студенты» и «Дополнительные сведения», которые будут связаны связью «один-к-одному» по полю «Номер зачетки». Связь «один-к-одному» приводит к тому, что для чтения связанной информации в нескольких таблицах приходится производить несколько операций чтения, что замедляет получение нужной информации. Связь «один-к-одному» может быть жесткой и нежесткой.

Третий вид связи – связь «многие-ко-многим». Данный вид связи означает, что несколько записей одной таблицы связаны с несколькими записями другой таблицы и наоборот. Например: между таблицами «Учебные группы и дисциплины» и «Преподаватели» может существовать связь «многие-ко-многим». Это означает, что каждый преподаватель может вести несколько предметов и, в то же время, один и тот же предмет могут вести несколько преподавателей.

Некоторые СУБД не поддерживают целостность БД при наличии связи «многие-ко-многим», хотя и позволяют реализовывать ее в таблицах неявным образом. Считается, что базу данных всегда можно перестроить так, чтобы любая связь «многие-ко-многим» была заменена на одну или более связей «один-ко-многим».