Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Часть 4. Контроль целостности связей




Замечание

Пример.

Пусть в основной таблице А содержится информация о том, на каких стан­ках могут работать рабочие некоторой бригады. Таблица B содержит сведе­ния о том, кто из бригады ремонтников какие станки обслуживает.

 

Таблица A

* +

Работает На станке
Иванов А.В. станок1
Иванов А.В. станок2
Петров Н.Г. станок1
Петров Н.Г. станокЗ
Сидоров В.К. станок2
   

 

Таблица B.

Обслуживает Станок
Голубев А.М. станок1
Голубев А.М. Станок3
Зыков Н.Г. Станок2
Зыков Н.Г. Станок3
Зыков Н.Г. Станок1
   

 

Очевидно, аналогично связи 1:1, связь М:М не устанавливает подчинен­ности таблиц. Для проверки этого можно основную и дополнительную таб­лицу поменять местами и выполнить объединение информации путем свя­зывания. Результирующие таблицы А+B» и B+А будут отличаться лишь порядком следования отдельных полей, а также порядком располо­жения записей.

Такую структуру необходимо переделать и привести итоговые таблицы к связи 1:М.

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

 


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

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

 

 

 
 

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

 

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

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

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

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

 

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

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

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

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

При рассмотрении попытаемся охватить все возможные методы организа­ции контроля целостности. В реальных СУБД могут применяться собствен­ные методы, подобные описываемым.

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

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

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

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

 

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

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

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

 

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

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

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

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

 




Поделиться с друзьями:


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


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



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




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