Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора информатика.doc
Скачиваний:
13
Добавлен:
24.09.2019
Размер:
689.66 Кб
Скачать

22. Целостность реляционных данных. Потенциальные, первичные и альтернативные ключи. Правило целостности объектов. Внешние ключи. Правило ссылочной целостности. Правила внешних ключей.

Целостность реляционных данных. В любой момент времени БД содержит нек-ые опред-ые значения атрибутов, к-ые выражают конкретное состояние объекта реального мира. БД нуждается в определении правил целостности, необходимых для того, чтобы данные не вступили в противоречие с реальным миром. Такие правила целостности явл-ся специфическими для БД. (имя - только текстовое значение, значения веса, роста - только положительные числа). Важно, чтобы данные внутри БД не противоречили друг другу.

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

Потенциальные, первичные и альтернативные ключи

Пусть R – нек-ое отношение, тогда потенциальный ключ К для R – это подмножество множества атрибутов R, блад. след. св-ми:

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

2) неизбыточность, т. е. никакое подмножество К не обладает свойством уникальности.

Потен.ключи предназначены для обеспечения осн-го механизма адресации на уровне кортежей, т. е. по значению потенциального ключа м. однозначно найти кортеж. В СУБД Access потенциальные ключи являются индексированными полями (для них в свойстве поля индексированное поле указывается значение «Да (совпадения не допускаются)»).

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

В любом отношении д. б. первичный ключ, т.е. должен содержаться хотя бы один потен. ключ. (одно поле или множество нескольких полей отношения- полностью ключевое отношение).

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

Внешние ключи

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

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

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

Пусть R2 — базовое отношение БД. Тогда внешний ключ FK отношения R2 - это подмножество множества атрибутов R2, такое, что:

  1. существует базовое отношение R1 содержащее потенциальный ключ СК;

  2. каждое значение FK в текущем значении R2 всегда совпадает со значением СК некоторого кортежа в текущем значении отношения R1.

Замечания:

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

2.Данный внешний ключ будет составным тогда и только тогда, когда соответствующий потенциальный ключ также будет составным. Аналогично: внешний ключ будет простым (состоящим из одного атрибута) тогда и только тогда, когда соответствующий потенциальный ключ- простой.3. Каждый атрибут, входящий в данный внешний ключ, должен быть определен на том же домене, что и соответствующий атрибут соответствующего потенциального ключа.

4.R1 и R2 нe обязательно различны.

Правило ссылочной целостности:

БД не должна содержать несогласованных значений внешних ключей (несогласованные значения- такие значения, которых нет для потенциального ключа в ссылочном отношении).

Типы связей

Внешние ключи реализуют три типа связей между двумя отношениями:

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

2. Один-ко-многим: каждому кортежу ссылочного (главного) отношения соответствует ноль, один или несколько кортежей ссылающегося (подчиненного) отношения, а каждому кортежу ссылающегося (подчиненного) отношения соответствует только один кортеж ссылочного (главного) отношения.

3. Многие-ко-многим: каждому кортежу первого отношения соответствует ноль, один или несколько кортежей второго отношения, и каждому кортежу второго отношения соответствует ноль, один или несколько кортежей первого отношения. В реляционной модели данных такая связь может быть смоделирована разбиением ее на две связи типа один-ко-многим.

Правила внешних ключей

Правило ссылочной целостности подразумевает состояние БД в конкретный момент времени. Избежать временных некорректных ситуаций, которые могут возникнуть при обновлении данных в БД м., если запретить любые операции, приводимые к нарушению правила ссылочной целостности. Но при обновлении БД не избежать временного нарушения целостности (например, расформировывается подгруппа, или в начале учебного года переименовывается подгруппа). Поэтому необходимо ввести компенсирующие операции, которые «исправят» это временное нарушение целостности.

Такие компенсирующие операции связаны с внешними ключами, поэтому для любого внешнего ключа при создании связи необходимо ответить на два вопроса:

1)Что должно произойти при попытке изменить (обновить) значение потенциального ключа, на который имеется ссылка? (Например, заменить названия подгруппы ИНФ-Щ1) на ИНФ-21(1) в таблице Подгруппы в начале учебного года.) Возможны как минимум два варианта ответа на такой вопрос:

  • ограничить, т. е. отложить до удаления и последующего обновления значений ссылающихся кортежей;

  • каскадировать, т. е. обновить значения во всех ссылающихся кортежах.

2) Что должно произойти при попытке удалить объект ссылки внешнего ключа? (Например, убрать все подгруппы V курса из таблицы Подгруппы в конце учебного года.) Возможны два аналогичных варианта:

  • ограничить, т.е. не удалять, пока пользователь не удалит ссылающиеся кортежи, иными словами, отложить удаление;

  • каскадировать, т. е. удалить, удаляя все соответствующие ссылающиеся кортежи.

Выбор ответов на эти два вопроса и является заданием (или определением) правил внешних ключей. В СУБД MS Access определение правил внешних ключей осуществляется при создании связей между таблицами: если будет отмечен параметр Каскадное обновление связанных полей - выбрана операция каскадирование для обновления, если не отмечен- ограничение; аналогично с параметром Каскадное удаление связанных записей.