Связывание таблиц; основные виды связи
При проектировании БД информацию обычно размещают в нескольких таблицах. Таблицы при этом связаны семантикой информации. В реляционных СУБД для указания связей таблиц производят операцию их связывания.
Это позволяет автоматически выполнять контроль целостности вводимых в базу данных, что повышает достоверность хранимой в БД информации.
Кроме того, установление связи между таблицами облегчает доступ к данным. Связывание таблиц при выполнении таких операций, как поиск, редактирование, выборка и подготовка отчетов, обеспечивает возможность обращения к произвольным полям связанных записей. Это уменьшает количество явных обращений к таблицам данных и число манипуляций в каждой из них.
Рассмотрим основные виды связи таблиц.
Между таблицами могут устанавливаться бинарные (между двумя таблицами), тернарные (между тремя таблицами) и, в общем случае, n-арные связи. Рассмотрим наиболее часто встречающиеся бинарные связи.
При связывании двух таблиц выделяют основную и дополнительную (подчиненную) таблицы. Логическое связывание таблиц производится с помощью ключа связи.
Ключ связи, по аналогии с обычным ключом таблицы, состоит из одного или нескольких полей, которые в данном случае называют полями связи (ПС).
Суть связывания состоит в установлении соответствия полей связи основной и дополнительной таблиц. Поля связи основной таблицы могут быть обычными и ключевыми. В качестве полей связи подчиненной таблицы чаще всего используют ключевые поля.
В зависимости от того, как определены поля связи основной и дополнительной таблиц (как соотносится ключевые поля с полями связи), между двумя таблицами могут устанавливаться четыре вида связи (табл. 3.2):
• один – один (1:1); • один – много (1:М);
• много – один (М:1); • много – много (М:М).
Таблица 3.2
Характеристика видов связей таблиц
Характеристика полей связи по видам | 1:1 | 1:М | М:1 | М:М |
Поля связи основной таблицы | являются ключом | являются ключом | не являются ключом | не являются ключом |
Поля связи дополнительной таблицы | являются ключом | не являются ключом | являются ключом | не являются ключом |
3.3. Связь таблиц вида 1:1
Связь вида 1:1 образуется в случае, когда все поля связи основной и дополнительной таблиц являются ключевыми. Поскольку значения в ключевых полях обеих таблиц не повторяются, обеспечивается взаимно - однозначное соответствие записей из этих таблиц. Сами таблицы, по сути, здесь становятся равноправными.
Пример. Пусть имеются основная О1 и дополнительная Д1 таблицы (рис. 3.3). Ключевые поля обозначим символом «*», используемые для связи поля обозначим символом «+».
Таблица О1 Таблица Д1
* + * +
Код товара | Цена |
а | |
б | |
в |
Код товара | Наименование товара |
а | стол |
в | книга |
Рис. 3.3. Пример связи таблиц вида 1:1
В приведенных таблицах установлена связь между записью (а, 10) таблицы О1 и записью (а, стол) таблице Д1. Основанием этого является совпадения значений в полях связи. Аналогичная связь существует и между записями (в, 3) и (в, книга) этих же таблиц. В таблицах записи отсортированы по значениям в ключевых полях.
Сопоставление записей двух таблиц по существу означает образование новых «виртуальных записей» (псевдозаписей). Так, первую пару записей логически можно считать новой псевдозаписью вида (а, 10, стол), а вторую пару - псевдозаписью вида (в, 3, книга).
На практике связи вида 1:1 используются сравнительно редко, так как хранимую в двух таблицах информацию легко объединить в одну таблицу, которая занимает гораздо меньше места в памяти ЭВМ. Возможны случаи, когда удобнее иметь не одну, а две и более таблицы. Причинами этого может быть необходимость ускорить обработку, повысить удобство работы нескольких пользователей с общей информацией, обеспечить более высокую степень защиты информации и т.д.
3.4. Связь таблиц вида 1:М
Связь 1:М имеет место в случае, когда одной записи основной таблицы соответствует несколько записей вспомогательной таблицы.
Пример. Пусть имеются две связанные таблицы О2 и Д2 (рис. 3.4). В таблице О2 содержится информация о видах запасных частей к прессам, а в таблице Д2 – сведения о фирмах-производителях этих запчастей, а также о наличии на складе хотя бы одной запасной запчасти.
Таблица О2 Таблица Д2
* + * + *
Код | Вид запчасти |
а | вкладыш вала |
б | манжета |
в | вставка муфты |
Код | Фирма-производитель | Наличие |
а | МехПресс | да |
а | Ремзавод | нет |
а | Машзавод | да |
а | Завод КПА | да |
а | ТяжМехПресс | да |
б | Гидравлик | нет |
б | Завод РПИ | нет |
б | Гидроагрегат | да |
в | МехПресс | да |
Рис. 3.4. Пример связи таблиц вида 1:1
Таблица Д2 имеет два ключевых поля, так как одна и та же фирма может производить разные запчасти. В примере фирма «МехПресс» производит вкладыши вала и вставки муфты.
Сопоставление записей обеих таблиц по полю «Код» порождает псевдозаписи вида: (а, МехПресс, да); (а, Ремзавод, нет); (а, Машзавод, да) и т.д.
Если свести псевдозаписи в новую таблицу, то получим полную информацию обо всех видах запчастей и фирмах, их производящих, а также сведения о наличии конкретных видов запчастей на складе.
3.5. Связь таблиц вида М:1
Связь М:1 имеет место в случае, когда одной или нескольким записям основной таблицы ставится в соответствие одна запись дополнительной таблицы.
Пример. Рассмотрим связь таблиц О3 и Д3 (рис. 3.5), где О3 – основная таблица, Д3 – дополнительная таблица.
Таблица О3 Таблица Д3
+ * +
Название детали | Срок изготовления | Стоимость заказа |
деталь1 | 4.03.98 | |
деталь2 | 3.01.98 | |
деталь3 | 17.02.98 | |
деталь4 | 6.05.98 |
Название детали | Виды материалов | Марки материалов |
деталь1 | чугун | марка1 |
деталь1 | чугун | марка2 |
деталь2 | сталь | марка1 |
деталь2 | сталь | марка2 |
деталь2 | сталь | марка3 |
деталь3 | алюминий | - |
деталь4 | чугун | марка2 |
Рис. 3.5. Пример связи таблиц вида М:1
Связывание этих таблиц обеспечивает эквивалентное образование следующих псевдозаписей: (деталь1, чугун, марка1, 4.03.98, 90); (деталь1, чугун, марка2, 4.03.98, 90); (деталь2, сталь, марка1, 3.01.98, 35); (деталь2, сталь, марка2, 3.01.98, 35) и т.д.
Полученная псевдотаблица может быть полезна при принятии управленческих решений, когда необходимо иметь все возможные варианты исполнения заказов по каждому изделию. Отметим, что таблица О3 не имеет ключей и в ней возможно повторение записей. Если таблицу Д3 сделать основной, а таблицу О3 - дополнительной, получим связь вида 1:М. Отсюда следует, что вид связи (1:М или М:1) зависит от того, какая таблица является главной, а какая дополнительной.
3.6. Связь таблиц вида М:М
Самый общий вид связи M:M возникает в случаях, когда нескольким записям основной таблицы соответствует несколько записей дополнительной таблицы.
Пример. Пусть в основной таблице О4 содержится информация о том, на каких станках могут работать рабочие бригады (рис. 3.6). Таблица Д4 содержит сведения о том, кто из ремонтников какие станки обслуживает.
Таблица О4 Таблица Д4
* * + * * +
Работает | На станке |
Иванов А.В. | станок1 |
Иванов А.В. | станок2 |
Петров Н.Г. | станок1 |
Петров Н.Г. | станок3 |
Сидоров В.К. | станок2 |
Обслуживает | Станок |
Голубев Б.С. | станок1 |
Голубев Б.С | станок3 |
Зыков А.Ф. | станок2 |
Зыков А.Ф. | станок3 |
Рис. 3.6. Пример связи таблиц вида М:М
Первой и третьей записям таблицы О4 соответствует первая запись таблицы Д4 (у всех этих записей значение второго поля - «станок1»). Четвертой записи таблицы О4 соответствует вторая и четвертая записи таблицы Д4 (во втором поле этих записей содержится «станок3»).
Исходя из определения полей связи можно составить новую таблицу с именем «О4+Д4», записями которой будут псевдозаписи (рис. 3.7). Записям полученной таблицы можно придать смысл возможных смен, составляемых при планировании работы. Для удобства, поля новой таблицы переименованы (такую операцию предлагают многие из современных СУБД).
Приведенную таблицу можно использовать, например, для получения ответа на вопрос: «Кто обслуживает станки, на которых трудится Петров Н.Г.?».
Очевидно, аналогично связи 1:1, связь М:М не устанавливает подчиненности таблиц. Для проверки этого можно основную и дополнительную
Таблица «О4+Д4»
Работа | На станке | Обслуживание |
Иванов А.В. | станок1 | Голубев Б.С. |
Иванов А.В. | станок2 | Зыков А.Ф. |
Петров Н.Г. | станок1 | Голубев Б.С. |
Петров Н.Г. | станок3 | Голубев Б.С. |
Петров Н.Г. | станок3 | Зыков А.Ф. |
Сидоров В.К. | станок2 | Зыков А.Ф. |
Рис. 3.7. Пример связи таблиц вида М:М
таблицу поменять местами и выполнить объединение информации путем связывания. Результирующие таблицы «О4+Д4» и «Д4+О4» будут отличаться порядком следования первого и третьего полей, а также порядком расположения записей.
Дата добавления: 2015-08-20; просмотров: 2946;