С.Д. Кузнецов - Основы баз данных (1121716), страница 51
Текст из файла (страница 51)
237 Курс Основы баз данных со1шгп сопесга пь с1е1гп(Г ог. г г= [СОИБТНА1НТ сопзгга пг пагде ] МОТ НО! Ь РН1МАНУ КЕУ ( СЕТЕВОЕ гебегепсее бе11гп а[оп СНЕСК ( сога[ььога1 ехргевэ[оп ) Как мы увидим немного позже, любое ограничение целостности, включаемое в определение столбца, может быть эквивалентным образом выражено в виде табличного ограничения целостности. Единственный резон определения ограничений на уровне столбца состоит в том, что в этом случае в ограничении целоспюсти не требуется явно указывать имя сппбца. Тем не менее, кратко рассмотрим ограничения целостности столбца отдельно. Ограничение НОт мньь означает, что в определяемом столбце никогда не должны содержаться неопределенные значения. Если определяемый столбец имеет имя с, то это ограничение эквивалентно следующему табличному ограничению: СНЕСК (С 1Н МОТ МОЬЬ).
В определение столбца может входить одно из ограничений: ограничение первичного ключа (РЕ1млну кеу) или ограничение возможного ключа (ОНТООе). Включение в определение столбца любого из этих ограничений означает требование уникальности значений определяемого столбца (т. е. во все время сушествования определяемой таблицы во всех ее строках значения данного столбца должны быть различны*).
Ограничение РНТМАНУ КЕУ, в дополнение к этому, влечет за собой ограничение НОт мцьь для определяемого столбца. Зги ограничения столбца эквивалентны следующим табличным ограничениям: РНТМАГ1 КЕУ (С) и ОМТООЕ (С). Ограничение ге(егепсен с(е11п(г(оп означает объявление определяемого столбца внешним ключом таблицы и обладает следуюшим синтаксисом: ге1егепсее ае1гпуь(оп НЕРЕНЕМСЕЯ Ьаее ГаЫе паше [ (со1шдп сошпа11ес) ] МАТСН ( Я1МРЬЕ ( РОЬЬ ( РАНТ1АЬ ) ] ( ОИ ОЕЬЕТЕ ге(егепс(а1 ась(ог. ] [ ОИ ОРОАТЕ гейегепс(а1 асс(оп На самом деле, данная синтаксическая конструкция работает и в случае определения внешнего ключа на уровне таблицы (в одном из определений табличных ограничений целостности).
Поэтому мы отложим обсуждение до рассмотрения этого общего случая. Пока отметим только, ". "ю хгюам """ " Р'. "" " и ' В атом случае ЗОН опирается на семантику неопределенных значений, отличную от используемой а большинстве других случаев. Считается, что (нвьь = наша = ггсе и что (е = МЛЫ = ППЬЬ = а) = Га1зедлялюбогозначенияа,отличногостНПЬЬ. 238 Лекция 12 Средства оп вделения базовых таблиц и ог вничений целостности со1цгпп сопела!!яг может содержать имя только одного столбца (потому что внешний ключ состоит из одного определяемого столбца). Ограничение эквивалентно следующему табличному ограничению: РОЕЕОМ КЕУ (С( гяТегепсея г(е!!п1т!огг. Проверочное ограничение снеск (сонг(!т!опа! ехргеяягоп) приводит к тому, что в данном столбце могут находиться только те значения, для которых вычисление сопг(!ггопа1 ехргеяягоп не приводит к результату~аде. В условном выражении проверочного ограничения столбца разрешается использовать имя только определяемого столбца.
Заметим, что проверочное ограничение столбца может быть безо всяких изменений перенесено на уровень определения табличных ограничений. Определение табличного ограничения Элемент определения табличного ограничения целостности задается в следующем синтаксисе: Ьаяе таЬ1е сопятга!пт де!!и!т!оп и =( СОМБТРА1МТ сопятга!пт пягпе ( ( РЕТМАЕУ КЕУ ( ОМ10ОЕ 1 ( со!цппт сопела!!ят РОРЕ1ОМ КЕУ ( со1цппт сопела!!ят ) ге!егепсея с(е(!и!т!оп СНЕСК ( сонг(!Г!опа! ехргяяягоп Как мы видим, имеется три разновидности табличных ограничений: ограничение первичного или возможного ключа (РК1МАЕУ КЕУ или ОМТООЕ), ограничение внешнего ключа (РОКЕОМ КЕУ) и проверочное ограничение (снеск).
любому ограничению может явным образом назначаться имя, если перед определением ограничения поместить конструкцию СОИБТКА1ИТ сопятга!пт папе. табличное ограничение первичного или возможного ключа Табличное ограничение первичного или возможного ключа ( РК1мАку кеу ( Ом1ООе 1 (со1цппз сопела!!яг) означает требование уникальности составных значений указанной группы столбцов (т.
е. во все время существования определяемой таблицы во всех ее строках составные значения данной группы столбцов должны быть различны*). Ограничение РК1мАКУ кеУ, в дополнение к этому, влечет ограничение МОТ МОЕЬ для всех столбцов, упоминаемых в определении ограничения. В определении таблицы допускается произвольное число определений возможного ключа (для разных комбинаций столбцов), но не более од- ' С учетом замечания по поводу особого толкования семантики неопределенных значений, сделанного в предыдунгей сноске. 239 Основы баз данных Курс ного определения первичного ключа.
Обратите особое внимание на последнюю часть предыдущего предложения: в языке Я.>Е действительно допускается определение таблиц, у которых отсутствуют возможные ключи. Эта особенность языка, среди прочего, очевидным образом противоречит базовым требованиям реляционной модели данных. Проверочное табличное ограничение Определение табличного ограничения вида СНЕСК [сопс]1С1опа1 ехргеэе(сп] приводит к тому, что указанное условное выражение будет вычисляться при каждой попытке обновления соответствующей таблицы (вставке новой строки, удалении или модификации существующей строки).
Считается, что попытка обновления таблицы нарушает проверочное ограничение целостности, если после выполнения операции обновления вычисление условного выражения дает результат майе. Другими словами, таблица находится в соответствии с данным проверочным табличным ограничением, если для всех строк таблицы результатом вычисления соответствующего условного выражения не является га!ге. Мы отложим обсуждение допустимых разновидностей условных выражений до следующей лекции, где оно будет более уместно в контексте рассмотрения оператора ЕЕЕЕСт языка Я.)1..
Табличное ограничение внешнего ключа Синтаксис и семантика определения внешнего ключа в операторе ЯЯ. определения базовой таблицы являются довольно запуганными и сложными. По этой причине мы посвящаем этой языковой конструкции отдельный подраздел. Табличное ограничение РОне1ОН кеу [со1ипп сопппа1(зс] гегегепсеэ с]ег1п(с(оп означает объявление внешним ключом группы столбцов, имена которых перечислены в списке со1сппп сопппа11эс. Обсудим теперь смысл ограничения внешнего ключа при разных вариантах формирования определения ссылок (гесегепсез с]ес(п(с(оп). Для удобства повторим синтаксическое правило.
ге(егепсез с]е(пнс(оп НЕРЕНЕИСЕБ Ьазе СаЫе ваше [ [со1пппп сопппа1]аС] ] [ МАТСН ( Е1МР?Е ] РО 1 ] РАНТ1А1 ) [ ОН ОЕЬЕТЕ ге(егепС(а1 асС(сп [ ОИ ОРТЛТЕ ге(егепс)а1 асс1оп ] В этом определении Ьаее с аЫ е папе должно представлять собой имя некоторой базовой таблицы (пусть, например, эта таблица имеет имя т). Ес- 240 Лекция 12 Средства определения базовых таблиц и ограничений целостности ли определение ссылок включает список столбцов (со1цллт солтла11эг), то этот список должен совпадать (с точностью до порядка следования имен столбцов) со списком имен столбцов, использованных в некотором определении первичного или возможного ключа (РК1МАЛу Кду или ПМ1Оцм) в определении таблицы т.
Если в определении ссылок список столбцов явно не задан, то считается, что он совпадает со списком столбцов, использованных в определении первичного ключа (РК1МАВУ Кму) таблицы Т. Разновидности способов сопоставления значении внешнего и возможного ключей Пусть определяемая таблица имеет имя з. Обсудим смысл необязательного раздела определения внешнего ключа мАтСн ( Э1МРЬК ~ РСЬЬ РАКТ1АЬ ). Если этот раздел отсутствует или если присутствует и имеет вид млтсн я1мрьк, то ограничение внешнего ключа (ссылочное ограничение) удовлетворяется в том и только в том случае, когда для каждой строки таблицы Я либо: (а) какой-либо столбец, входящий в состав внешнего ключа, содержит АятьЬ; (Ь) таблица т содержит в точности одну строку, такую, что значение внешнего ключа в данной строке таблицы Б совпадает со значением соответствующего возможного ключа в этой строке таблицы т.
Если раздел млтсн присутствует в определении внешнего ключа и имеет вид млтСн РАЛт1М., то ограничение внешнего ключа удовлетворяется в том и только в том случае, когда для каждой строки таблицы ялибо: (а) каждый столбец, входящий в состав внешнего ключа, содержит Гл,ь; (Ь) таблица т содержит по крайней мере одну такую строку, что для каждого столбца данной строки таблицы ь; значение которого отлично От АгГтЬА, ЕГО ЗНаЧЕНИЕ СОВПадаЕт СО ЗНаЧЕНИЕМ СООтВЕтСтВуЮщЕГО столбца возможного ключа в этой строке таблицы т. Если раздел мАтсн имеет вид мАтсн Ргл,ь, то ограничение внешнего ключа удовлетворяется в том и только в том случае, когда для каждой строки таблицы э выполняется одно из следующих условий: (а) каждый столбец, входящий в состав внешнего ключа, содержит мс ь; (Ь) ни один столбец, входящий в состав внешнего ключа, не содержит МГ1Ьгч И таблица т содержит в точности одну строку, такую, что значение внешнего ключа в данной строке таблицы Я совпадает со значением соответствующего возможного ключа в этой строке таблицы т.
Очевидно, что только при наличии спецификации мАтсн Рсьь ссылочное ограничение соответствует требованиям реляционной модели. Тем 241 курс Основы баз данных не менее в определении ограничения внешнего ключа базовых таблиц в ЯЯ. по умолчанию предполагается наличие спецификации МАТСН Е?МЕРЕ.' Подцержкв ссылочной целостности и ссылочные действия В связи с определением ограничения внешнего ключа нам осталось рассмотреть еще два необязательных раздела — он Реьете ге1егепьга1 асьгоп и Он ОРРАте гееегепьга? асггоп. Прежде всего, приведем синтаксическое правило: ге1егепьга1 асьгоп НО АСТ10Н ) ЕЕЯТЕ1СТ ) САНСАРЕ ~ БЕТ РЕГАТ?Т ~ ЯЕТ Н?Л 1.
) Чтобы объяснить, в каких случаях и каким образом выполняются зти действия, требуется сначала определить понятие ссылающейся строки (ге~егенстя гога). Если в определении ограничения внешнего ключа отсутствует раздел МАТСН или присутствуют спецификации МАТСН Е?МРЬЕ либо НАтсн епьь, то для данной строки г таблицы т строкой таблицы ч, ссылающейся на строку г, называется каждая строка таблицы е, значение внешнего ключа которой совпадает со значением соответствующего возможного ключа строки с.