Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример 5. Пусть в основной таблице О4 содержится информация о том, на каких станках могут работать рабочие некоторой бригады






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

 

Таблица О4
* * +
Работает На станке
Иванов А.В. Станок1
Иванов А.В. Станок2
Петров Н.Г. Станок1
Петров Н.Г. Станок3
Сидоров В.К. Станок2

 

Таблица Д4
* * +
Обслуживает Станок
Голубев Б.С. Станок1
Голубев Б.С. Станок3
Зыков А.Ф. Станок2
Зыков А.Ф. Станок3

 

Первой и третьей записям таблицы О4 соответствует первая запись таблицы Д4 (у всех этих записей значение второго поля – «станок1»). Четвертой записи таблицы О4 соответствуют вторая и четвертая записи таблицы Д4 (во втором поле этих записей содержится «станокЗ»).

Исходя из определения полей связи этих таблиц можно составить новую таблицу с именем «04+Д4», записями которой будут псевдозаписи. Записям полученной таблицы можно придать смысл возможных смен, составляемых при планировании работы. Для удобства, поля новой таблицы переименованы (кстати, такую операцию предлагают многие из современных СУБД).

 

Таблица О4+Д4
Работа Станок Обслуживание
Иванов А.В. Станок1 Голубев Б.С.
Иванов А.В. Станок2 Зыков А.Ф.
Петров Н.Г. Станок1 Голубев Б.С.
Петров Н.Г. Станок3 Голубев Б.С.
Петров Н.Г. Станок3 Зыков А.Ф.
Сидоров В.К. Станок2 Зыков А.Ф.

 

Приведенную таблицу можнаиспользовать, например, для получения ответа на вопрос: «Кто обслуживает станки, на которых трудится Петров Н.Г.?». Очевидно, аналогично связи 1: 1, связь М: М не устанавливает подчиненности таблиц. Для проверки этого можно основную и дополнительную таблицу поменять местами и выполнить объединение информации путем связывания. Результирующие таблицы «О4+Д4» и «Д4+О4» будут отличаться порядком следования первого и третьего полей, а также порядком расположения записей.

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.