Лекция_2 (С.Д. Кузнецов - Презентации лекций), страница 3
Описание файла
Файл "Лекция_2" внутри архива находится в папке "С.Д. Кузнецов - Презентации лекций". PDF-файл из архива "С.Д. Кузнецов - Презентации лекций", который расположен в категории "". Всё это находится в предмете "модель данных sql" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 3 страницы из PDF
главы баз данных. Лекция 231Средства определения, изменения иликвидации базовых таблиц (26)Если в качестве требуемого ссылочного действияуказано SET DEFAULT, тострока t удаляется,и во всех столбцах, которые входят в состав внешнегоключа, всех строк, ссылающихся на строку t,проставляется заданное при их определении значениепо умолчаниюЕсли в определении внешнего ключа содержитсяспецификация MATCH PARTIAL, то подобномувоздействию подвергаются только те строки таблицы S,которые ссылаются исключительно на строку tЕсли в качестве требуемого ссылочного действияуказано SET NULL, тострока t удаляется,и во всех столбцах, которые входят в состав внешнегоключа, всех строк, ссылающихся на строку20.05.2016Доп. главы баз данных.
Лекция 232Средства определения, изменения иликвидации базовых таблиц (27)Пусть определение ограничения внешнего ключа содержит раздел ONUPDATE referential_actionПредположим, что предпринимается попытка обновить столбцысоответствующего возможного ключа в строке t из таблицы TТогда если в качестве требуемого ссылочного действия указано NO ACTIONили RESTRICT, тоЕсли в качестве требуемого ссылочного действия указано СASCADE, тооперация обновления отвергается, если ее выполнение вызвало бынарушение ограничения внешнего ключастрока t обновляется,и если в определении ограничения внешнего ключа отсутствует разделMATCH или присутствуют спецификации MATCH SIMPLE или MATCH FULL,тосоответствующим образом обновляются все строки, ссылающиеся на t20.05.2016в них должным образом изменяются значения столбцов, входящих в составвнешнего ключаЕсли же в определении ограничения внешнего ключа присутствуетспецификация MATCH PARTIAL, то обновляются только те строки, которыессылаются исключительно на строку tДоп.
главы баз данных. Лекция 233Средства определения, изменения иликвидации базовых таблиц (28)20.05.2016Если в качестве требуемого ссылочного действияуказано SET DEFAULT, то строка t обновляется, и во всех столбцах, которые входят в составвнешнего ключа и соответствуют изменяемымстолбцам таблицы T, всех строк, ссылающихся настроку t, проставляется заданное при ихопределении значение по умолчаниюЕсли в определении внешнего ключа содержитсяспецификация MATCH PARTIAL, то подобномувоздействию подвергаются только те строкитаблицы S, которые ссылаются исключительно на строку t, причем вних изменяются значения только тех столбцов,которые не содержали NULLДоп.
главы баз данных. Лекция 234Средства определения, изменения иликвидации базовых таблиц (29)20.05.2016Если в качестве требуемого ссылочного действияуказано SET NULL, то строка t обновляется, и во всех столбцах, которые входят в составвнешнего ключа и соответствуют изменяемымстолбцам таблицы T, всех строк, ссылающихся настроку t, проставляется NULLЕсли в определении внешнего ключа содержитсяспецификация MATCH PARTIAL, то подобномувоздействию подвергаются только те строкитаблицы S, которые ссылаются исключительно на строку tДоп.
главы баз данных. Лекция 235Средства определения, изменения иликвидации базовых таблиц (30)20.05.2016Примеры определений базовых таблицОпределим таблицы служащих (EMP), отделов (DEPT) ипроектов (PRO)Эти таблицы имеют заголовки, показанные на рисункеДоп. главы баз данных. Лекция 236Средства определения, изменения иликвидации базовых таблиц (31)• Столбцы EMP_NO, EMP_SAL,DEPT_NO, PRO_NO,DEPT_TOTAL_SAL, DEPT_MNG иPRO_MNG определяются на ранееопределенных доменах определения доменов EMP_NO иSALARY приведены в предыдущейлекции• Первичными ключами отношенийEMP, DEPT и проектов PROявляются столбцы EMP_NO,DEPT_NO и PRO_NOсоответственно• В таблице EMP столбцы DEPT_NO и PRO_NO являются внешнимиключами, указывающими на отдел, в котором работает служащий, и навыполняемый им проект соответственно20.05.2016Доп.
главы баз данных. Лекция 237Средства определения, изменения иликвидации базовых таблиц (31)• В таблице DEPT внешним ключомявляется столбец DEPT_NO,указывающий на служащего,являющегося руководителемсоответствующего отдела• В таблице PRO внешним ключомявляется столбец PRO_MNG,указывающий на служащего,являющегося менеджеромсоответствующего проекта• Другие ограничения целостности мы обсудим позже20.05.2016Доп. главы баз данных. Лекция 238Средства определения, изменения иликвидации базовых таблиц (32) Определим таблицу EMP:• В части (1) указывается, что создается таблица с именем EMP• В части (2) определяется столбец EMP_NO на домене EMP_NO у этого столбца не определено значение по умолчанию, и он объявленпервичным ключом таблицы это ограничение целостности добавляется через AND к ограничениям,унаследованным столбцом от определения домена помимо прочего, это означает неявное указание запрета для данногостолбца неопределенных значений20.05.2016Доп.
главы баз данных. Лекция 239Средства определения, изменения иликвидации базовых таблиц (33)• В части (3) определен столбец EMP_NAME на базовом типе данныхсимвольных строк переменной длины с максимальной длиной 20 для столбца указано значение по умолчанию – строка 'Incognito', и в качествеограничения целостности запрещены неопределенные значения• В части (4) определяется столбец EMP_BDATE он имеет тип данных DATE, значением по умолчанию является NULL кроме того, ограничение столбца запрещает принимать на работу лиц, окоторых известно, что они родились до Октябрьского переворота20.05.2016Доп.
главы баз данных. Лекция 240Средства определения, изменения иликвидации базовых таблиц (34)• В части (5) определен столбец EMP_SAL на домене SALARY• значение по умолчанию и ограничения целостности наследуются изопределения домена• В части (6) столбец DEPT_NO определяется на одноименном домене, но явно объявляется, что значением по умолчанию этого столбца будет NULL• Кроме того, добавляется ограничение внешнего ключа: столбец DEPT_NOссылается на первичный ключ таблицы DEPT определено ссылочное действие: при удалении строки из таблицы DEPT во всехстроках таблицы EMP, ссылавшихся на эту строку, столбцу DEPT_NO должно бытьприсвоено неопределенное значение20.05.2016Доп.
главы баз данных. Лекция 241Средства определения, изменения иликвидации базовых таблиц (35)• В части (7) определяется столбец PRO_NO• Его определение аналогично определению столбца DEPT_NO, ноограничение внешнего ключа вынесено в часть (8), где оноопределяется в полной форме как табличное ограничение• Наконец, в части (9) определяется табличное проверочноеограничение с именем PRO_EMP_NO, которое требует, чтобы ни водном проекте не участвовало больше 50 служащих20.05.2016Доп. главы баз данных. Лекция 242Средства определения, изменения иликвидации базовых таблиц (36) Определим таблицу DEPT:• В части (3) столбец DEPT_EMP_NO определен на базовом типе INTEGER без значенияпо умолчанию, с запретом неопределенного значения и с проверочным ограничением,устанавливающем допустимый диапазон значений числа служащих в отделе• Еще одно проверочное ограничение этого столбца – (7) – вынесено на уровеньопределения табличного ограничения в каждой строке таблицы DEPT значение столбца DEPT_EMP_NO должно равнятьсяобщему числу строк таблицы EMP, в которых значение столбца DEPT_NO равно значениюодноименного столбца данной строки таблицы DEPT20.05.2016Доп.
главы баз данных. Лекция 243Средства определения, изменения иликвидации базовых таблиц (37)• В части (5) для определения столбца DEPT_TOTAL_SAL (объем фонда заработнойплаты отдела) используется домен SALARY• но при этом явно установлено значение столбца по умолчанию, запрещено наличие неопределенныхзначений и введено дополнительное проверочное ограничение, определяющее нижний порог объемафонда заработной платы отдела• проверочное ограничение (8) вынесено на уровень определения табличного ограничения• в каждой строке таблицы DEPT значение столбца DEPT_TOTAL_SAL должно быть не меньше суммызначений столбца EMP_SAL во всех строках таблицы EMP, в которых значение столбца DEPT_NO равнозначению одноименного столбца данной строки таблицы DEPT20.05.2016Доп. главы баз данных.
Лекция 244Средства определения, изменения иликвидации базовых таблиц (38)• Обратите внимание на определение столбца DEPT_MNG – часть (6)• этот столбец объявляется внешним ключом таблицы DEPT• у отдела могут временно отсутствовать руководители, поэтому в столбце допускаются неопределенныезначения• но если у отдела имеется руководитель, то он должен являться руководителем только этого отдела• на первый взгляд можно было бы воспользоваться ограничением столбца UNIQUE• но такое ограничение допускало бы наличие неопределенного столбца DEPT_MNG только в однойстроке таблицы DEPT, а мы хотим допустить отсутствие руководителя у нескольких отделов• поэтому потребовалось ввести более громоздкое проверочное ограничение столбца20.05.2016Доп.
главы баз данных. Лекция 245Средства определения, изменения иликвидации базовых таблиц (39)• По поводу двух приведенных определений базовых таблиц у читателеймогут возникнуть два вопроса:(a) почему проверочное ограничение (9) в первом определении ипроверочные ограничения (7) и (8) во втором определении вынесены изопределений соответствующих столбцов, хотя формально являютсяименно ограничениями столбцов?(b) почему ограничению (9) в первом определении присвоено явное имя,а ограничения (7) и (8) во втором определении оставлены безымянными?20.05.2016Доп. главы баз данных.
Лекция 246Средства определения, изменения иликвидации базовых таблиц (40)• На первый вопрос можно ответить следующим образом• да, эти ограничения можно было бы включить в определения столбцов• это дело вкуса• но все три ограничения являются очень важными с точки зренияорганизации таблиц в целом• поэтому лучше показывать их на уровне определения табличныхограничений20.05.2016Доп.
главы баз данных. Лекция 247Средства определения, изменения иликвидации базовых таблиц (41)• Вот ответ на второй вопрос• Ограничение (9) в первом определении и ограничения (7) и (8) во второмопределении внешне похожи, но сильно отличаются по своей сути• Ограничения (7) и (8) связаны с агрегатной семантикой столбцов DEPT_EMP_NOи DEPT_TOTAL_SAL таблицы DEPT• отмена ограничений изменила бы смысл этих столбцов• Ограничение (9) является текущим административным ограничением• если руководство примет решение разрешить использовать в одном проекте более 50служащих, ограничение можно отменить без изменения смысла столбцов таблицы EMP• имея это в виду, мы ввели явное имя ограничения (9), чтобы при необходимости имеласьпростая возможность отменить это ограничение с помощью оператора ALTER TABLE20.05.2016Доп.
главы баз данных. Лекция 248Средства определения, изменения иликвидации базовых таблиц (42) Наконец, определим таблицу PRO:• Столбец PRO_SDATE содержит дату начала проекта, а столбецPRO_DURAT – продолжительность проекта в годах• В этом определении имеет смысл прокомментировать часть (6) мы считаем, что если отдел, по крайней мере временно, можетсуществовать без руководителя, то у проекта всегда должен быть менеджер поэтому определение столбца PRO_MNG является гораздо более строгим,чем определение столбца DEPT_MNG в таблице DEPT сочетание ограничений UNIQUE и NOT NULL при отсутствии значений поумолчанию приводит к абсолютной уникальности значений столбца PRO_MNG20.05.2016Доп. главы баз данных.