Лекция_2 (С.Д. Кузнецов - Презентации лекций), страница 2
Описание файла
Файл "Лекция_2" внутри архива находится в папке "С.Д. Кузнецов - Презентации лекций". PDF-файл из архива "С.Д. Кузнецов - Презентации лекций", который расположен в категории "". Всё это находится в предмете "модель данных sql" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
главы баз данных. Лекция 215Средства определения, изменения иликвидации базовых таблиц (12)20.05.2016Определение табличного ограниченияЭлемент определения табличного ограниченияцелостности задается в следующем синтаксисе:base_table_constraint_definition ::=[ CONSTRAINT constraint_name ]{ PRIMARY KEY | UNIQUE } ( column_commalist )| FOREIGN KEY ( column_commalist ) references_definition| CHECK ( conditional_expression )Имеются три разновидности табличных ограничений:ограничение первичного или возможного ключа(PRIMARY KEY или UNIQUE), ограничение внешнегоключа (FOREGN KEY) и проверочное ограничение(CHECK)Любому ограничению может явным образом назначатьсяимя, если перед определением ограничения поместитьконструкцию CONSTRAINT constraint_nameДоп.
главы баз данных. Лекция 216Средства определения, изменения иликвидации базовых таблиц (12)20.05.2016Наличие табличного ограничения первичного иливозможного ключа { PRIMARY_KEY | UNIQUE } (column_commalist)означает требование уникальности составныхзначений указанной группы столбцов т.е. во все время существования определяемойтаблицы во всех ее строках составные значенияданной группы столбцов должны быть различныОграничение PRIMARY KEY, в дополнение к этому,влечет ограничение NOT NULL для всех столбцов,упоминаемых в определении ограниченияДоп. главы баз данных. Лекция 217Средства определения, изменения иликвидации базовых таблиц (13)В определении таблицы допускаетсяпроизвольное число определенийвозможного ключано не более одного определенияпервичного ключаВ языке SQL действительно допускаетсяопределение таблиц, у которых отсутствуютвозможные ключи20.05.2016для разных комбинаций столбцов,эта особенность языка, среди прочего,очевидным образом противоречит базовымтребованиям реляционной модели данныхДоп.
главы баз данных. Лекция 218Средства определения, изменения иликвидации базовых таблиц (14)Определение табличного ограничения вида CHECK(conditional_expression) приводит к тому, что указанноеусловное выражение будет вычисляться при каждойпопытке обновления соответствующей таблицыСчитается, что попытка обновления таблицы нарушаетпроверочное ограничение целостности, если послевыполнения операции обновления вычислениеусловного выражения дает результат falseДругими словами, таблица находится в соответствии сданным проверочным табличным ограничением, еслидля всех строк таблицы результатом вычислениясоответствующего условного выражения не являетсяfalse20.05.2016вставке новой строки, удалении или модификациисуществующей строкипро условные выражение позжеДоп.
главы баз данных. Лекция 219Средства определения, изменения иликвидации базовых таблиц (15)Табличное ограничение внешнего ключаСинтаксис и семантика определения внешнегоключа в операторе SQL определения базовойтаблицы являются довольно запутанными исложнымиТабличное ограничениеFOREIGN KEY ( column_commalist ) references_definition20.05.2016означает объявление внешним ключом группыстолбцов, имена которых перечислены в спискеcolumn_commalistОбсудим смысл ограничения внешнего ключа приразных вариантах формирования определенияссылок (references_definition)Доп. главы баз данных. Лекция 220Средства определения, изменения иликвидации базовых таблиц (16)Табличное ограничение внешнего ключаСинтаксис и семантика определения внешнегоключа в операторе SQL определения базовойтаблицы являются довольно запутанными исложнымиТабличное ограничениеFOREIGN KEY ( column_commalist ) references_definition20.05.2016означает объявление внешним ключом группыстолбцов, имена которых перечислены в спискеcolumn_commalistОбсудим смысл ограничения внешнего ключа приразных вариантах формирования определенияссылок (references_definition)Доп.
главы баз данных. Лекция 221Средства определения, изменения иликвидации базовых таблиц (17)Повторим синтаксическое правило:references_definition ::=REFERENCES base_table_name[column_commalist) ][ MATCH { SIMPLE | FULL | PARTIAL } ][ ON DELETE referential_action ][ ON UPDATE referential_action ]В этом определении base_table_nameдолжно представлять собой имя некоторойбазовой таблицы20.05.2016пусть, например, эта таблица имеет имя TДоп.
главы баз данных. Лекция 222Средства определения, изменения иликвидации базовых таблиц (18)20.05.2016Если определение ссылок включает списокстолбцов (column_commalist), то этот список долженсовпадать с точностью до порядка следования имен столбцовсо списком имен столбцов, использованных внекотором определении первичного иливозможного ключа (PRIMARY_KEY или UNIQUE) вопределении таблицы TЕсли в определении ссылок список столбцов явноне задан, то считается, что он совпадает сосписком столбцов, использованных в определениипервичного ключа (PRIMARY_KEY) таблицы TДоп. главы баз данных. Лекция 223Средства определения, изменения иликвидации базовых таблиц (19)Пусть определяемая таблица имеет имя SОбсудим смысл необязательного раздела определениявнешнего ключа MATCH { SIMPLE | FULL | PARTIAL }Если этот раздел отсутствует или если присутствует иимеет вид MATCH SIMPLE, то ограничение внешнегоключа (ссылочное ограничение) удовлетворяется в том итолько в том случае, когда для каждой строки таблицы S20.05.2016либо какой-либо столбец, входящий в состав внешнегоключа, содержит NULL,либо таблица T содержит в точности одну строку такую,что значение внешнего ключа в данной строке таблицы Sсовпадает со значением соответствующего возможногоключа в этой строке таблицы TДоп.
главы баз данных. Лекция 224Средства определения, изменения иликвидации базовых таблиц (20)20.05.2016Если раздел MATCH присутствует в определениивнешнего ключа и имеет вид MATCH PARTIAL, тоограничение внешнего ключа удовлетворяется втом и только в том случае, когда для каждой строкитаблицы S либо каждый столбец, входящий в составвнешнего ключа, содержит NULL, либо таблица T содержит, по крайней мере, однутакую строку, что для каждого столбца даннойстроки таблицы S, значение которого отлично отNULL, его значение совпадает со значениемсоответствующего столбца возможного ключа вэтой строке таблицы TДоп. главы баз данных. Лекция 225Средства определения, изменения иликвидации базовых таблиц (21)Если раздел MATCH имеет вид MATCH FULL, тоограничение внешнего ключа удовлетворяется в том итолько в том случае, когда20.05.2016для каждой строки таблицы S либо каждый столбец,входящий в состав внешнего ключа, содержит NULL,либо ни один столбец, входящий в состав внешнего ключа,не содержит NULL, и таблица T содержит в точности однустроку такую, что значение внешнего ключа в даннойстроке таблицы S совпадает со значениемсоответствующего возможного ключа в этой строке таблицыTЛегко видеть, что только при наличии спецификацииMATCH FULL ссылочное ограничение соответствуеттребованиям реляционной моделиТем не менее, в определении ограничения внешнегоключа базовых таблиц в SQL по умолчаниюпредполагается наличие спецификации MATCH SIMPLEДоп.
главы баз данных. Лекция 226Средства определения, изменения иликвидации базовых таблиц (22)20.05.2016В связи с определением ограничения внешнегоключа нам осталось обсудить еще дванеобязательных раздела ON DELETE referential_action и ON UPDATE referential_actionПрежде всего, приведем синтаксическое правило:referential_action ::={ NO ACTION | RESTRICT | CASCADE |SET DEFAULT | SET NULL }Чтобы объяснить, в каких случаях, и каким образомвыполняются эти действия, требуется сначалаопределить понятие ссылающейся строки(referencing row)Доп. главы баз данных.
Лекция 227Средства определения, изменения иликвидации базовых таблиц (23)Если в определении ограничения внешнегоключа отсутствует раздел MATCH илиприсутствуют спецификации MATCHSIMPLE или MATCH FULL, то для даннойстроки t таблицы T строкой таблицы S,ссылающейся на строку t, называется20.05.2016каждая строка таблицы S, значение внешнегоключа которой совпадает со значениемсоответствующего возможного ключа строки tДоп.
главы баз данных. Лекция 228Средства определения, изменения иликвидации базовых таблиц (24)20.05.2016Если в определении ограничения внешнего ключаприсутствует спецификация MATCH PARTIAL, тодля данной строки t таблицы T строкой таблицы S,ссылающейся на строку t, называется каждая строка таблицы S, отличные от NULLзначения столбцов внешнего ключа которойсовпадают со значениями соответствующихстолбцов соответствующего возможного ключастроки tВ случае MATCH PARTIAL строка таблицы Sназывается ссылающейся исключительно настроку t таблицы T, если эта строка таблицы S является ссылающейсяна строку t и не является ссылающейся на какуюлибо другую строку таблицы TДоп.
главы баз данных. Лекция 229Средства определения, изменения иликвидации базовых таблиц (24)20.05.2016Если в определении ограничения внешнего ключаприсутствует спецификация MATCH PARTIAL, тодля данной строки t таблицы T строкой таблицы S,ссылающейся на строку t, называется каждая строка таблицы S, отличные от NULLзначения столбцов внешнего ключа которойсовпадают со значениями соответствующихстолбцов соответствующего возможного ключастроки tВ случае MATCH PARTIAL строка таблицы Sназывается ссылающейся исключительно настроку t таблицы T, если эта строка таблицы S является ссылающейсяна строку t и не является ссылающейся на какуюлибо другую строку таблицы TДоп. главы баз данных.
Лекция 230Средства определения, изменения иликвидации базовых таблиц (25)Пусть определение ограничения внешнего ключа содержит разделON DELETE referential_actionПредположим, что предпринимается попытка удалить строку t изтаблицы TТогда, если в качестве требуемого ссылочного действия указаноNO ACTION или RESTRICT, тооперация удаления отвергается, если ее выполнение вызвало бынарушение ограничения внешнего ключаЕсли в качестве требуемого ссылочного действия указаноCASCADE, тострока t удаляется,и если в определении ограничения внешнего ключа отсутствуетраздел MATCH или присутствуют спецификации MATCH SIMPLEили MATCH FULL, тоЕсли же в определении ограничения внешнего ключа присутствуетспецификация MATCH PARTIAL, то20.05.2016удаляются все строки, ссылающиеся на tудаляются только те строки, которые ссылаются исключительно настроку tДоп.