Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по БД.doc
Скачиваний:
117
Добавлен:
01.05.2014
Размер:
432.64 Кб
Скачать

Стратегия поддержания ссылочной целостности

Существует две основные:

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

  2. CASCADE (каскадировать). Разрешить выполнение операции, но внести необходимые изменения в других отношениях так, чтобы не допустить нарушение ссылочной целостности и сохранить все имеющиеся связи.

Эти стратегии являются стандартными и препятствуют во всех СУБД, поддерживающих ссылочную целостность.

Существуют еще стратегии:

  1. SETNULL. Разрешается выполнение операции, но все возникшие некорректные значения внешних ключей, изменяются наNULLзначение. Эта стратегия имеет два недостатка:

  1. Использование NULL значений.

  2. Теряется связь кортежей дочернего отношения с кортежами родительского отношения.

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

  2. IGNORE. Операции выполняются не обращая внимания на нарушение ссылочной целостности. Вся ответственность за целостность БД ложится на пользователя. Пользователь также может придумать свою стратегию поддержки ссылочной целостности.

Применение стратегии поддержания ссылочной целостности:

При обновлении кортежа в родительском отношении:

RESTRICT- не разрешается обновление если имеется хотя бы один кортеж в дочернем отношении, ссылающийся на обновляемый кортеж.

CASCADE - разрешается обновление, и каскадно изменяется значение внешних ключей во всех кортежах дочернего отношения, ссылающихся на обновляемый кортеж.

SET NULL– выполняется обновление и во всех кортежах дочернего отношения, ссылающихся на обновляемый кортеж, значения внешних ключей изменится на NULL- значение.

SET DEFAULT- выполняется обновление и во всех кортежах дочернего отношения, ссылающихся на обновляемый кортеж, значение внешних ключей меняется на значение по умолчанию.

IGNORE- выполняется операция не обращая внимания на нарушение ссылочной целостности.

Допустимые стратегии:

RESTRICT

CASCADE

SET NULL

SET DEFAULT

При вставке кортежа в дочернее отношение:

RESTRICT. Не разрешать вставку, если внешний ключ во вставляемом кортеже не соответствует не одному значению потенциального ключа родительского отношения.

SET NULL.Вставить кортеж вместо значения ключа, занестиNULL значение вместо предлагаемого пользователем некорректного значения.

SET DEFAULT. Вставить кортеж, но в качестве значения внешнего внести значение принятое по умолчанию.

IGNORE.Вставить кортеж , не обращая внимания на нарушение ссылочной целостности.

При обновлении кортежа в дочернем отношении:

RESTRICT, SET NULL, SET DEFAULT, IGNORE.

Соседние файлы в предмете Базы данных