Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Контроль целостности связей

Связывание таблиц; основные виды связи

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

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

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

Рассмотрим основные виды связи таблиц.

Между таблицами могут устанавливаться бинарные (между двумя таблицами), тернарные (между тремя таблицами) и, в общем случае, 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» будут отличаться порядком следования первого и третьего полей, а также порядком располо­жения записей.

 

Из перечисленных видов связи чаше используется связь вида 1:М. Связь вида 1:1 можно считать частным случаем связи 1:М, когда одной записи главой таблицы соответствует одна запись вспомогательной таблицы. Связь М:1, по сути, является «зеркальным отображением» связи 1:М. Оставшийся вид связи М:М характеризуется как слабый вид связи или даже как отсутствие свя­зи. Поэтому в дальнейшем рассматривается связь вида 1:М.

Напомним, что при образовании связи вида 1:М одна запись главной таблицы (главная, родительская запись) оказывается связанной с несколькими записями дополнительной (дополнительные, подчиненные записи) и имеет место схема, показанная на рис. 3.8.

Контроль целостности связей означает анализ содержимого двух таблиц на соблюдение следующих правил:

- каждой записи основной таблицы соответствует нуль или более записей дополнительной таблицы;

- в дополнительной таблице нет записей, которые не имеют родительских

связей в основной таблице;

 

Основная таблица Дополнительная таблица

 

Рис. 3.8. Связь 1:М записей двух таблиц

- каждая запись дополнительной таблицы имеет только одну родительскую запись основной таблицы.

Опишем действие контроля целостности при манипулировании данными в таблицах. Рассмотрим три основные операции над данными двух таблиц:

- ввод новых записей,

- модификацию записей,

- удаление записей.

При вводе новых записей возникает вопрос определения последовательности ввода записей в таблицы. Исходя из приведенных правил, данные сначала вводятся в основную таблицу, а потом в дополнительную. Очередность ввода может быть установлена на уровне целых таблиц или отдельных записей (случай одновременного ввода в несколько открытых таблиц).

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

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

При редактировании полей связи дополнительной таблицы требуется, чтобы новое значение поля связи совпадало с соответствующим значением какой-либо записи основной таблицы. Т.е. дополнительная запись может сменить родителя, но остаться без него не должна.

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

- редактировать записи, у которых нет подчиненных записей. Если есть подчиненные записи, то блокировать модификацию полей связи;

- изменения в полях связи основной записи мгновенно передавать во все поля связи всех записей дополнительной таблицы (каскадное обновление).

В операциях удаления записей связанных таблиц большую свободу, очевидно, имеют записи дополнительной таблицы. Удаление их должно происходить практически бесконтрольно.

Удаление записей основной таблицы логично подчинить одному из следующих правил:

- удалять можно запись, которая не имеет подчинённых записей;

- запретить (блокировать) удаление записи при наличии подчинённых записей, либо удалять её вместе со всеми подчиненными записями (каскадное удаление).

<== предыдущая лекция | следующая лекция ==>
Определение реляционной модели | Введение в язык запросов QBE
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 510; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.048 сек.