ЦЕЛОСТНОСТЬ РЕЛЯЦИОННЫХ ДАННЫХ.ppt
- Количество слайдов: 19
ЦЕЛОСТНОСТЬ РЕЛЯЦИОННЫХ ДАННЫХ 1
3. 4 Целостность реляционных данных 2 Большинство баз данных подчиняется очень многим правилам целостности. Пример. Список правил для поставщиков и деталей может включать следующие правила: номера поставщиков должны быть в форме Snnnn, где пппп может принимать зна чение до четырех десятичных цифр; номера деталей должны быть в форме Рппппп, где ппппп может принимать значе ние до пяти десятичных цифр; значение статуса поставщика должно быть в диапазоне 1 100; города поставщиков и деталей должны выбираться из определенного списка; цвета деталей должны выбираться из определенного списка; вес деталей должен быть больше нуля; количество при отправке должно быть умножено на 100; все красные детали должны сдаваться на хранение в Лондоне; если город поставщика — Лондон, то статус поставщика должен быть равен 20;
Целостность реляционных данных 3 Любое данное правило целостности является специфическим для базы данных в том смысле, что оно применяется к одной конкретной базе данных. В дополнение к специфическим правилам в реляционной модели есть два общих особых правила целостности Эти особые правила применяются к любой базе данных, а не только к некоторым определенным, таким как базы данных поставщиков и деталей. Эти два особых правила относятся к потенциальным (и первичным) ключам и ко внешним ключам.
3. 4. 1. Потенциальные ключи 4 Первичный ключ — это просто уникальный идентификатор для некоторого отношения. Первичный ключ является частным случаем более общего понятия — потенциаль ного ключа. Определение Пусть R— некоторое отношение. Тогда потенциальный ключ К для R — это подмножество множества атрибутов R, обладающее следующими свойствами: 1. Свойством уникальности Нет двух различных кортежей в отношении R с одинаковым значением К. 2. Свойством неизбыточности. Никакое из подмножеств К не обладает свойством уникальности. Каждое отношение имеет, по крайней мере, один потенциальный ключ, так как не содержит одинаковых кортежей; т. е. поскольку кортежи уникальны, то, по крайней мере, комбинация всех атрибутов обладает свойством уникальности и поэтому возможны два варианта.
Потенциальные ключи 5 Либо эта комбинация обладает свойством неизбыточности, а значит, будет потен циальным ключом (на самом делеединственным потенциальным ключом). Либо существует по крайней мере одно подходящее подмножество этой комбинации, заведомо обладающее свойством уникальности и к тому же обладающее свойством неизбыточности. Синтаксис операторов определения потенциального ключа для базового отношения (каждый оператор CREATE BASE RELATION должен вклю чать в себя, по крайней мере, одно определение потенциального ключа): На практике отношения чаще всего имеют только один потенциальный ключ, хотя их может быть несколько. Пример. Отношение ELEMENTS, представляет таблицу химических элементов. У каждого элемента есть уникальное имя, уникальное обозначение (например, обозначение свинца — "РЬ") и уникальное атомное число. Поэтому ясно, что в отношении есть три различных потенциальных ключа:
Потенциальные ключи 6 Терминология. Потенциальный ключ, состоящий из более чем одного атрибута, называется составным. Потенциальный ключ, состоящий из одного атрибута, называется простым. Причина важности потенциальных ключей заключается в том, что они обеспечивают основной механизм адресации на уровне кортежей в реляционной системе. Следовательно, единственный гарантируемый системой способ точно указать на какой нибудь кортеж — это указать значение некоторого потенциального ключа. Пример. С помощью выражения S WHERE S# = 'S 3‘ мы гарантированно получим не больше одного кортежа. Аналогично, если атрибут SNAME также будет потенциальным ключом для отношения S с помощью выражения S WHERE SNAME = 'Blake' мы также гарантированно получим не более одного кортежа.
Потенциальные ключи 7 Потенциальные ключи имеют такое же фундаментальное значение для успешной работы реляционной системы, как адресация основной памяти для ус пешной работы машины, на которой эта система установлена Выводы: Отношения", которые не имеют потенциальных ключей, т. е. "отношения", допускающие дублирование кортежей, ограничивают отображение нарушений или отклонений от нормального режима работы в определенных обстоятельствах Система, в которой не используются потенциальные ключи, иногда ограничена в возможностях отображения состояния, которое не является "действительно реляционным", даже если используемые в ней отношения и не допускают дублирования кортежей.
Первичные и альтернативные ключи 8 Базовое отношение может иметь больше одного потенциального ключа. В реляционной модели один из потенциальных ключей должен быть выбран в качестве первичного ключа в базовом отношении, а остальные потенциальные ключи, если они есть, будут называться альтернативными ключами. Пример. В отношении ELEMENTS, можно выбрать "обозначение элемента" в качестве первичного ключа, тогда "название элемента" и "атомное число” будут альтернативными ключами.
3. 4. 2. Внешние ключи 9 Определение термина "внешний ключ". Пусть R 2 — базовое отношение. Тогда внешний ключ FK в отношении R 2 — это подмножество множества атрибутов R 2, такое что: существует базовое отношение R 1 (RIи R 2 не обязательно различны) с потенциальным ключом СК; каждое значение FK в текущем значении R 2 всегда совпадает со значением СК некоторого кортежа в текущем значении R 1. Пояснения к определению. Внешние ключи, как и потенциальные, определены как. множества атрибутов. Поэтому для них необходимо использовать "скобки множества" (фигурные скобки). Пример. В отношении SP базы данных поставщиков и деталей внешние ключи, строго говоря, — это {S#} и {Р#}, а не S# и Р#. Однако в неформальном контексте скобки обычно опускают, если это множество содержит только один атрибут.
Внешние ключи 10 По определению каждое значение данного внешнего ключа должно являться значением соответствующего потенциального ключа. Обратное не требуется. Данный внешний ключ будет составным, т. е. будет состоять из более чем одного атрибута, тогда и только тогда, когда соответствующий потенциаль ный ключ так же будет составным. Он будет простым тогда и только тогда, когда соответст вующий потенциальный ключ также будет простым. Каждый атрибут, входящий в данный внешний ключ, должен быть определен на том же домене, что и соответствующий атрибут соответствую щего потенциального ключа. Для внешнего ключа не требуется, чтобы он был компонентом первичного ключа или какого либо потенциального ключа в содержащем его отношении, хотя в примере базы данных поставщиков и деталей оба внешних ключа обладают таким свойством (в действительности два внешних ключа в отношении SP вместе со ставляютпервичный ключ этого отношения).
Внешние ключи 11 Пример (определение базы данных отделов и сотрудников): В этой базе данных атрибут DEPТ# отношения ЕМР является внешним ключом, соответствующим первичному ключу DEPT# отношения DEPT; однако он, ко нечно, не является компонентом первичного ключа ЕМР# (и никакого другого потенциального ключа) отношения ЕМР.
Внешние ключи 12 Терминология. Значение внешнего ключа представлено ссылкой к кортежу, содержащему соответствующее значение потенциального ключа (ссылочный кортеж или целевой кортеж). Ограничение, по которому значения данного внешнего ключа должны быть адекватны значениям соответствующих потенциальных ключей, называют ссылочным ограничением. Отношение, которое содержит внешний ключ, называется ссылающимся отношением, а отношение, которое содержит соответствующий потенциальный ключ, — ссылочным отношением или целевым отношением (target relation). Ссылочные диаграммы. База данных поставщиков и деталей. Существующие в базе данных ссылочные ограничения можно представить средствами следующей ссылочной диаграммы
Внешние ключи 13 Каждая стрелка обозначает внешний ключ в отношении, из которого стрелка выходит; этот ключ специфически ссылается на первичный ключ отношения, на который стрелка указывает. Можно помечать каждую стрелку в ссылочной диаграмме именами атрибутов (именем атрибута), которые составляют соответствующий внешний ключ. Например: S# ; Р#. Отношение может быть одновременно ссылочным и ссылающимся, как в случае отношения R 2 в следующей диаграмме: R 3 R 2 Rl. «Ссылочный путь". Пусть отношения Rn, R(n 1), . . . , R 2, R 1 такие, что имеется ссылочное ограничение из Rn в R(n 1), ссылочное ограничение из R(n 1) в R(n 2), . . . и ссылочное ограничение из R 2 в R 1: Rn R(n l) R(n 2) . . . R 2 Rl. Тогда цепочка стрелок из Rn в R 1 представляет ссылочный путь из Rn в R 1.
Внешние ключи 14 Отношения R 1 и R 2 в определении внешних ключей не обязательно различны, т. е. некоторое отношение может включать внешний ключ, значения которого должны соответствовать значениям некоторых потенциальных ключей в том же отношении. В качестве примера рассмотрим следующее отношение: В этом отношении атрибут MGR_EMP# представляет номер служащего для менеджера, который идентифицируется атрибутом ЕМР# как служащий. Здесь ЕМР# — первичный ключ, a MGR_EMP# — внешний ключ, который ссылается на этот первичный. (Например, кортеж для служащего Е 4 может включать значение MGR_EMP# кортежа ЕЗ, который представляет ссылку к кортежу ЕМР для служащего ЕЗ. Такие отношения иногда называют самоссылающимися.
Внешние ключи 15 Самоссылающиеся отношения, такие как отношение ЕМР в предыдущем примере, в действительности представляют собой специальный случай более общей ситуации, когда могут возникать ссылочные циклы. Ссылочный цикл существует, если есть ссылочный путь из некоторого отношения Rn к себе: Rn R(n l) R(n 2) . . . R 2 Rl Rn Синтаксис для указания внешнего ключа FOREIGN KEY ( element commalist ) REFERENCES base relation Оператор CREATE BASE RELATION может включать нуль или более определений внешних ключей Синтаксис категории element здесь представлен или именем атрибута базового отношения, содержащего (обычный случай), или выражением вида RENAME attribute AS attribute
Внешние ключи 16 Первый параметр attribute является именем атрибута содержащего отношения, а второй параметр attribute представляет собой новое имя для такого атрибута, который реально заменяет первое имя при работе с данным внешним ключом Полное множество имен атрибутов для внешнего ключа должно совпадать с множеством имен атрибутов для некоторого потенциального ключа базового отношения, указанного после оператора REFERENCES.
Ссылочная целостность 17 Вместе с понятием внешнего ключа реляционная модель включает следующее правило ссылочной целостности: Ссылочная целостность. База данных не должна содержать несогласованных значений внешних ключей. «Несогласованное значение внешнего ключа» — это значение внешнего ключа, для которого не существует отвечающего ему значения соответствующего потенциального ключа в соответствующем целевом отношении. Правило утверждает, что если В ссылается на А, тогда А должно существовать. Понятия "поддержка ссылочной целостности" и "поддержка внешних ключей" означают одно и то же.
Правила внешних ключей 18 Правило целостности выражено исключительно в терминах состояний базы данных. Любое состояние базы данных, не удовлетворяющее этому правилу, некорректно. Для каждого внешнего ключа необходимо ответить на два важных вопроса. 1. Что должно случиться при попытке удалить объект ссылки внешнего ключа? Например, удалить поставщика, для которого есть, по крайней мере, одна поставка. В общем существует по меньшей мере две возможности: " ОГРАНИЧИТЬ — "ограничить" операцию удаления, до момента, когда не будет существовать соответствующих поставок (в противном случае операция запре щается); КАСКАДИРОВАТЬ — "каскадировать" операцию удаления, удаляя также соответствующие поставки. 2. Что должно случиться при попытке обновить потенциальный ключ, на который ссылается внешний ключ? Например, при попытке обновить номер поставщика, для которого существует, по крайней мере, одна соответствующая поставка. Как и для удаления здесь существует по меньшей мере две возможности:
Правила внешних ключей 19 ОГРАНИЧИТЬ — "ограничить" операцию обновления до момента, когда не будет существовать соответствующих поставок (в противном случае операция запрещается); КАСКАДИРОВАТЬ — "каскадировать" операцию обновления, обновляя также внешний ключ в соответствующих поставках. Разработчик при проектировании внешних ключей базы данных должен не только указать атрибут или комбинацию атрибутов, составляющую данный внешний ключ, но и указать специальные правила внешних ключей для данного внешнего ключа. Необходимо расширить синтаксис определения внешнего ключа следующим образом: FOREIGN KEY (…) REFERENCES base relation DELETE option UPDATE option Здесь параметр option может принимать значение RESTRICTED (ограничить) или CASCADES (каскадировать). В общем случае параметр option в синтаксисе должен включать возможность вызова определенной при установке процедуры баз данных (иногда называемой "хранимой процедурой" или "процедурой триггеров").


