Главная » Просмотр файлов » Программирование баз данных MS SQL Server

Программирование баз данных MS SQL Server (1084479), страница 56

Файл №1084479 Программирование баз данных MS SQL Server (Программирование баз данных MS SQL Server) 56 страницаПрограммирование баз данных MS SQL Server (1084479) страница 562018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 56)

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

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

Для этого применяется процедура, аналогичная созданию первичного ключа. е Добавление внешнего ключа к существующей таблице Зададим еще один внешний ключ на таблице Огс!егэ, чтобы обеспечить ввод в поле Еюр1оуее10 (предназначенное для хранения идентификаторов служащих, которые вводят заказы) только действительных данных о служащих, которые определены в таблице Етр1оуееэ.

Для этого необходимо предусмотреть уникальную идентификацию целевой строки в таблице, указанной в ссылке. Как уже было отмечено выше, этой цели можно достичь, ссылаясь либо на первичный ключ, либо на столбец с ограничением ОИ1ЯОЕ. В данном случае воспользуемся существующим первичным ключом, который был задан на таблице Емр1оуееэ в одном из примеров, приведенных выше в настоящей главе, следующим образом: АЬТЕК ТАВЬЕ Огаегв А00 СОНБТЕА1КТ ГК Епр1оуеесгеасевохс!ех КОКЕТОК КЕТ (Екр1оуее10! КЕГЕКЕКСЕЭ Екр1оуеев(Епргоуее10! После этого еще раз вызовите на выполнение процедуру эр Ле1рсопэгга10С применительно к таблице Охбегэ и убедитесь в том,что новое ограничение быяо успешно задано. Описание полученных результатов Последнее введенное в этом примере ограничение действует точно так же, как и предыдущее, — регламентирует правила, применяемые к данным, вводимым в сост ветствующий столбец, согласно объявлению самой таблицы.

Определение столбца не позволяет, например, вводить строковые данные в столбец числового типа, а ограничение не дает возможности вставлять в таблицу Огс!егэ такую строку, в которой значение поля Еюр1оуее с данными о служащем, ответственным за ввод заказа, не ссылается на действительное значение Етр1оуее10. Если кто-то попытается ввести строку, которая не согласуется со строкой данных о служащем, такая операция вставки в таблицу Огс!егэ будет отвергнута в целях обеспечения целостности базы данных. Обуатикм внимание на то, что даже после задания двух внешних ключей в посеедкт1 части резулькииков выполнения процедуры вр Ле1рсопзсгайп с !или вкладки Меэва9еэ, если выбрана опция Яеэпйэ !и ег!б) папрежнему повлляется строка со словами "йо боге1дп !сеуз гебегепсе СЛйэ Са01е", котоусьм свидетелытвуют о том, что в бозе данных отсутствуют как ив либо друвис таблицы, ссылающиеся на данную таблицу хотя в самой экий таблице имеются внешние ключи, ссылающиеся на д!зугие таблицы.

Чтобы убедиться в том, что в базе данных учитывается различие между ссьыающимися таблицами и таблицами, указанными в ссылке, вызовите на данном этапе пРоуедуфу зр Ле1рсопэ Сгазп С пуксиекительно к таблице Сиз С омеге или Е1пр1 оуеез и убедитесь в том, что для каждой из этих тобе1сц указано, что на нее ссылается новая таблица Огс!егв. Ограничении 223 Создание таблицы, ссылающейся на саму себя Иногда возникает необходимость задать в ограничении столбец, находящийся не в другой таблице, а непосредственно в той же таблице, в которой создается ссылка на исходное ограничение. Это означает, что одна и та же таблица применительно к некоторому ограничению может играть роль и ссылающейся таблицы, и таблицы, указанной в ссылке.

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

Таное требование обусловлено тгм, что идентификационное значение вь~биРоется и заполняется после того, как уже бъога осущеппвлена провфка внешнего ключа и гфинудитвль. но введено заданное в нем офаничениа Это означает, что пРи отсутствии строк в таблице еще отсутствует значение, на котфое могла бы указывать ссылка из пфвой строки при сфоведении гфовфки. Из этой ситуации есть также еще один выход — начать с создания требуемого внешнего ключа, а заонм запретить его использование п(зи вводе пфвой стфоки. Дополнительные сведения о том, как можно отменить использование офаничений, гфиведены ниже в этой главе.

Итак, в данном случае рассматривается таблица, в которой имеется ссылка на столбец, представляющий собой столбец идентификации, поэтому необходимо вначале ввести в таблицу хотя бы одну первичную строку и только после этого задавать ограничение: 1НБЕНт тито Евр1оуеез ( Г1гзънаве, 1аэьнаве, т1Г1е, ББН, Ба1агу, Рггогэа1агу, Н1геэасе, МапачегЕвр10, Верагсвепъ ЧАЬНЕБ ( '8111у ВоЬ', 'воооп', 'Неаа Соо(с Ъ Воъъ1е Хаэьег', '123-45-6789', 100000, 80000, '1990-01-01', 1, 'Соо(с1п9 апо ВЬСГ11пч' Теперь, после ввода первичной строки, можно приступить к заданию внешнего ключа.

В этом варианте создания таблицы, ссылающейся на саму себя, в котором ис- 224 Глава б ЛЬтЕВ тЛВЬЕ Евр1пуеез ЛОС СОНЯтВЛЬНт ГК евр1оуееНазМапаеег РОВЕТОН КЕт (М и Евртс) ВЕРЕВЕНСЕЯ Евр1оуеез(Евр1пуеетс) В данном операторе есть только одно отличие от оператора ОВЕЛТЕ. Но есть и еще один нюанс, состоящий в том, что в данном определении допускается не использовать ключевое слово ЕОВЕ16И КЕТ (но этого не следует делать) и оставлять только конструкцию ВЕЕЕВЕКЯЕЯ. К этому времени таблица Евр1оуеез уже определена, но если бы речь шла о ее создании с самого начала, то на данном этапе можно было бы применить следующий сценарий (особого внимания заслуживает определение внешнего ключа на столбце МападегЕвр10): СВЕЛтх тЛЗЬЕ Евр1оуеез ( Евр1пуее1О гпс РВ1МЛВХ КЕУ, Ругзгмаве чагслаг (25) Мгпп1е1пггта1 снаг (1) ЬазСНаве чагспаг (25) т1С1е чагспаг (25) я ям чагслаг (11) Яа1агу воле у Рггогза1агу вопеу Ьазгяатзе ЛЯ Яа1агу — Ргьогза1агу, Нтгеоаге зва11с)асес1ве Тегвтпагтопсаге зва11пагеггве МападегЕвр1О Тпг ВЕРЕВЕНСЕЯ Евр1оуеез(ьвр1оуее1О) Серагсвепс чагслаг (25) тсент1тт НОТ НОЬЬ НОТ НОЬЬ, НОЬЬ, НОТ НОЬЬ, НОТ НОЬЬ, НОТ НОЬЬ, НОТ БОЬЬ, НОТ НОЬЬ, НОТ НОЬЬ, НОЬЬ, НОТ НОЬЬ НОТ НОЬЬ ':Следует отметить, что при пспыт(е уничтожь таблипцпуЬЕвр1оуевз В Даннмй момент (что-:, 'убм'ЕЫРПОпяипИтатсгПЕратср„раврМатрнзаЕМЫй ВО ВтсрсыгПрИМЕрЕ) бЫЛОБЬ).ПОЛУЧЕНО СсобщЕ' ние 'об-'ошибке.'- Это' связайо.с тем, что'после определанйя в: таблице 'Огцеха сбылби на '': таблицу евр1оуееазтидве таблиць(стайовятся, как ррийято вырвкаться, ".сзязейными со:;.

".схемой.,;это означает;:, что в базе-даннык теперь содержится информацитя;;о) наличии так, йазываемой а(авизсймосг идруггой таблицы от таблица( Евр5оуееял Суучетом::хаком: инфор- ' 'мации Субд.б()(. Зегуег не.позволяет унйчтожать:таблицу, на которуюйсылается 'другая ' 'таблица.,'Чтобы облучить' возможность выполнить,'с лом(яцын СУБД ЗОЬ' Вел(ег' удулейие, ,'таблицы.

евчр1оуееть (йли; по.тсой(же 'причине,'таблицы Спзсосвекз)'(необходима'вначале: уиичтвкать.енвщийй'клЮЧ 'Егтаблицв Огйегз, КррМЕ ТОГО, ййГОбпХОдйцопуЧИтцаатЬ, НГО(тасбЛИцча.:Ссвдаии)еяо„О6ЪяВЛЕНИЕМ ЗНЕШНгатсчХЛЮ- ча сеылающгимся,'на ту:же таблицу, в'огреничении; ие''позва(ит)ввести:деже первояачель- НУЮ СгтрОКу, ПОЗтчыу ПОдО6НЫЕ Обьяапвинй СЛвдувт, ПрИМвйятъ'ЛИШЬ С, уЧЕтОМ ТОГО уСЛОЕИя, чтобы ограничение;внешнего клсючаьбыло зайано на ртолбце.,дбпускаюц(ем ввод И0~4;сзна- '- 'чений;, таким образом появится-:во(змож(ностсьс айвети,"первую стчргаку, имеющую),и()ы;значат '' . НИЕП В:-СТОЛбцвчВНЕШНЕГО)(ЛЮЧа'И) тЕМ:СВМЫМ;ИэбвжатЬ НЕОбкрдИМротн Задаиня ИСХОдмай; строки.

пользуется оператор ЛЬТЕВ, осуществляемые действия аналогичны тем, которые вы- полняются при уточнении любого другого определения внешнего ключа. Проверим действие следующего оператора на практике: Ограничения 225 Каскадное осуществление действий СКЕАТЕ ТАВЬЕ Отое Реташв ( Отзетгв 1пт Растко чатспат (10) Резст1рттоп чатсьат(25) Рп1тРттсс попсу Оту тпт СОМБТВАТМТ ГКОтсетвета11з РК1МАКУ КЕУ (ОтМет1Р, РаттМо), СОМБТВА1МТ Ркотл)етсопталпзвета11з РОКЕ16М КЕУ (Отс)етлп) ВЕРЕВЕМСЕБ ОтМетз(отт)ет1Р) ОМ РРРАТЕ МО АСТ1ОМ ОМ РЕЬЕТЕ САБСАРЕ Мот МРЬЬ, МОТ МРЬЬ, МОТ МРЬЬ, Мот МРЬЬ, МОТ МРЬЬ, В приведенном выше операторе используется много новых конструкций, поэтому рассмотрим отдельно все не встречавшиеся ранее компоненты.

Одним из важных различий между внешними ключами и ключами других типов является то, что внешние ключи двунаправлены. Иными словами, действие внешних ключей выражается не только в том, что они обусловливают ввод в дочернюю таблицу только таких значений, которые представлены в родительской таблице, но и обеспечивают проверку строк дочерней таблицы при внесении изменений в родительскую таблицу (что позволяет предотвратить появление в дочерней таблице так называемых висячих строк, т.е. строк, потерявших связь со строками родительской таблицы). По умолчанию СУБД ЯЯ1 Бегуег "защищает" от удаления такие строки родительской таблицы, которым соответствуют строки, существующие в дочерней таблице. Но иногда предпочтительный способ организации работы приложения состоит в том, чтобы удаление всех зависимых строк, препятствующих удалению строки, на которую они ссылаются, происходило автоматически.

Характеристики

Тип файла
PDF-файл
Размер
39,07 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее