В процессе проектирования БД для размещения информации создается несколько таблиц, которые связываются между собой.
Многими СУБД при связывании таблиц выполняется автоматический контроль целостности данных, которые вводят в БД, согласно установленным связям. В результате повышается достоверность информации, которая хранится в базе данных.
Также связывание таблиц приводит к облегчению доступа к данным. Установление связей между таблицами при выполнении поиска, просмотра, редактирования, выборки и подготовки отчетов позволяет обеспечить возможность обращения к любому полю связанных записей. Это приводит к уменьшению количества явных обращений к таблицам и числа операций в каждой из них.
Основные виды связи таблиц
Между таблицами можно устанавливать бинарные (связь двух таблиц), тернарные (связь трех таблиц) и $n$-арные связи.
Чаще всего встречаются бинарные связи.
При связи двух таблиц выделяется основная и дополнительная (подчиненная) таблица. Логическое связывание таблиц происходит при помощи ключа связи.
Ключ связи, как и обычный ключ таблицы, содержит одно или несколько полей, которые в таком случае называются полями связи.
Связывание заключается в установлении соответственных полей связи основной и дополнительной таблиц.
Основная таблица может содержать обычные и ключевые поля связи. Поля связи подчиненной таблицы обычно являются ключевыми полями.
В зависимости от того, как соотнесены ключевые поля и поля связи, в общем случае между двумя таблицами могут быть установлены 4 основные вида связи:
- один-к-одному ($1:1$);
- один-ко-многим ($1:М$);
- много-к-одному ($М:1$);
- много-ко-многим ($M:N$ или $М:М$).
Связь вида 1:1
Связь 1:1 создается, если все поля связи основной и дополнительной таблиц – ключевые.
Т.к. значения ключевых полей обеих таблиц не могут повторяться, записи из этих таблиц взаимно-однозначно соотносятся.
Пусть существует основная О и дополнительная Д таблицы. Символом «$*$» обозначим ключевые поля, символом «$+$» обозначим поля, которые используются для связи.
В таблицах совпадают значения в полях связи, поэтому будут связаны запись (а, 10) таблицы О и запись (а, стол) таблицы Д, а также запись (в, 3) и (в, книга).
На практике связь 1:1 используется довольно редко, т.к. информацию, которая хранится в двух таблицах, можно объединить в одну таблицу, которая будет занимать намного меньше места в памяти компьютера.
Например, если объединить запись (а, 10) таблицы О и запись (а, стол) таблицы Д, то получим запись (а, 10, стол) новой псевдотаблицы.
Иногда удобно иметь больше одной таблицы. Например, при необходимости ускорения обработки, повышения удобства работы с общей информацией нескольких пользователей, обеспечения большей степени защиты информации и т.д.
Связь вида 1:М
Связь 1:М создается, если одной записи основной таблицы соответствуют более одной записи вспомогательной таблицы.
Рассмотрим связанные таблицы О и Д. Таблица О содержит информацию о видах мультимедийных устройств, а таблица Д – сведения о фирмах, которые производят эти устройства, и о наличии как минимум одного устройства на складе.
Таблица Д содержит 2 ключевых поля, поскольку одна фирма может производить устройства нескольких видов.
Если сопоставить записи таблиц по полю Код, то получим новые псевдозаписи. Например, псевдозапись (a, CD-ROM, Acer, да).
При сведении псевдозаписей в новую таблицу можно получить полную информацию обо всех видах мультимедийных устройств ПЭВМ, фирмах, которые их производят, и сведения о наличии этих устройств на складе.
Связь вида М:1
Связь М:1 создается, если нескольким записям основной таблицы соответствует одна запись дополнительной таблицы.
Рассмотрим связанные таблицы О и Д.
При связывании этих таблиц обеспечивается установление такого соответствия между записями, которое приводит к образованию новых псевдозаписей. Например, (деталь 1, чугун, марка1, 1.04.2016, 150), (деталь 1, чугун, марка2, 1.04.2016, 150) и т.д.
Связь вида М:М
Связь М:М возникает, если несколько записей дополнительной таблицы соответствуют нескольким записям основной таблицы.
Связь М:М, аналогично связи 1:1, не устанавливает подчиненность таблиц. Чтобы это проверить, нужно поменять местами основную и дополнительную таблицу и объединить информацию путем связывания. Порядок следования полей и порядок расположения записей полученных таблиц будет отличаться.