Программирование баз данных MS SQL Server (1084479), страница 63
Текст из файла (страница 63)
И для этого можно воспользоваться соответствующей системной хранимой процедурой, предусмотренной в СУБД бО( Яеггег. Эта процедура называется эр берепбз и имеет следующий синтаксис ЕХЕС зр берепбз <оЬ)еоо паве> Процедура зр берепбз предоставляет список всех объектов, зависящих от того объекта, в отношении которого запрашивается информация. к сожалению; нельзя:,полностьЮ расечитйвать-"на':пслучаноиа,'в (памо<щоьв пороцвдуры зр.''.'йерцпбэ(информации:обо-,'-асах,объектах',"зааисящих'.от,'у«азанцсгс:родитальр «оп> вбьа«гв 'Дело'.
в-'томь чта-'сУБДБ зй; Янгу>вг поддерживает арййцип"арсг<анизацйи,:рабссты, '«отбор э(й ИНСГда 'уа)С<МИИаатоябПрд'-,Наа<ВЕЙИЕМ'.СтЛбжаи>НСГС'раарю((МНИя ИМаН";; -ПОСуеп(айтау; т ссд:псйятиам.отложенного:разрешения:Иман'=псдраау>меваазтс)с<вазможность',арада ВатЬОбЬЕ«АДЬЮ(ПррвждЕ;:ВСаГО, Хора))йММа 'Прана>урн>)()'КотсрЫЕ'ЭаъаИСят:,От: друГОГО(а(бовса~та„ причем ащв-,'до„бсэйрвуия,-атсрсг(о:объекта((целевого 'овьчвяуа'э<ависимссти();:Нвпримсвр( сс:-' ВраМЕННМараЕраИИ:ВОЬ:за<Гост:,'дОПуСКаат СОЗдаНИРа:-Х(ШНИМОй:йрОцадуры;;-«ОтОраяр ССЫЛа.. атон,иа НЕКСтс<РУ(СФбЛИЦ>У;,ВЩЕ Дагтс<ГСГ «а«.:бУДвт ССЗДа И>а:СаМа(У«аЗаййаЯ-;:В.
йай 'таб)(ИЦа ВГ(СДообНМХСЛУЧВЯ)(СУБДЗЦЬвассЕГНаИМЕатаааи<о)КНО<тИ У<казатЬ а Сан<СЕЕ",:,фо>РМИРУ- аМСМ С'ПОМСц(ЬЮб(рОцзадуры Ер-'- бврЕПберраеоытатронаааМу<вотабЛИ>цу 'КаК'уяаетауКяцуЮ в,'-интересующаой';нас'зааиСихмсрти.,Поэтому а 'списке,,зависимостей формируемом с, йб-, ,',м<ощью'пРоцвдурыз(яР бдРепбэ,''набудут приавйвньг Саадвин>я Сза<висимоет~дажоа паол>е< .
создания:срртаатствующай'.таблиц м, 248 Глава 6 Применение триггеров для обеспечения целостности данных Описанию триггеров посвящена отдельная глава настоящей книги, но любое описание ограничений, правил и заданных по умолчанию значений не будет полным, если в нем хотя бы не упоминаются триггеры. Триггеры наиболее широко применяются для реализации правил обеспечения целостности данных. Триггерам посвящена одна из следующих глав книги, поэтому в данном разделе отметим лишь то, что с помощью триггеров осуществляется очень широкий набор действий, касающихся целостности данных.
Эти действия обычно являются настолько сложными, что невозможно надеяться на их осуществление с помощью какого-либо ограничения или правила. Недостатком триггеров (а недостатки, как известно, можно найти во всем) является то, что они вносят существенные дополнительные издержки и поэтому практически в любых обстоятельствах весьма (и весьма) значительно замедляют работу. Триггеры по самой своей сути являются процедурными конструкциями (и именно этим обусловлены их широкие возможности), но их следует вводить в действие только после того, как процесс определения всех прочих объектов базы данных полностью заканчивается. Кроме того, к использованию триггеров следует прибегать только после того, как возможности применения всех других средств обеспечения целостности данных будут исчерпаны.
Выбор используемых средств обеспечения целостности данных В предыдущих разделах данной главы описаны все виды средств обеспечения целостности данных, а в настоящем разделе приведена информация о том, какими соображениями следует руководствоваться при выборе средств, наиболее подходящих для использования в конкретной ситуации. Что касается ограничений, то некоторые из них имеют довольно четко обозначенную область применения (к ним относятся ограничения первичного и внешнего ключа, а также ограничения уникальности), поэтому речь может идти лишь о том, должны ли они использоваться в конкретной таблице или нет.
С другой стороны, функции ограничений других типов и прочих средств обеспечения целостности данных в определенной степени перекрываются, поэтому задача выбора средств, наиболее подходящих в конкретной ситуации, может оказаться довольно сложной. Вообще говоря, в настоящей главе были приведены основные сведения о преимуществах и недостатках каждой из рассматриваемых конструкций, а в табл. 6.4 эти сведения кратко представлены вместе для удобства пользования. Правила и заданные по умолчанию значения в основном используются, если в базе данных должна быть реализована довольно надежная логическая модель и предусмотрено широкое применение определяемых пользователем типов данных.
В таком случае правила и заданные по умолчанию значения позволяют использовать широкий набор функциональных средств и упростить сопровождение базы данных, не требуя значительных затрат труда со стороны программистов. Однако, прибегая к применению правил и заданных по умолчанию значений, следует помнить, что в какой-то из будущих версий ВО(. Бегтег поддержка этих конструкций может прекратиться. Возможно, этот день наступит не скоро, но обязательно наступит. Ограничения 249 Таблица 6.4.
Преимущества и недостатки некоторых средств обеспечения целостности данных Преимущества Средство поддержки целостности даннык Недостатки Обеспечивают высокое быстродействие. Позволяют ссылаться на другие столбцы. Вызываются до начала выполнения абрабатывающей основной части оператора. Являются совместимыми со стандартом АНВ! Должны быть переопределены от- дельно дпя каждой таблицы. Не позволяют ссылаться на другие таблицы. Не могут быть привязаны к типам данных Ограничения Являются независимыми объектами.
Допускают повторное использование. Могут быть привязаны к типам данных. Вызываются до начала выполнения основной части оператора Отличаются немного более низким быстродействием, чем ограниче- ния. Не позволяют формировать ссыл- ки с одних столбцов на другие. Не позволяют ссылаться на другие таблицы. В действительности предназначе- ны только для обеспечения обрат- ной совместимостигй Правила и заданные по умолчанию зна- чения Допускают исключительно широкое при- менение.
Позволяют ссыпаться на другие столбцы и другие таблицы. Обеспечивают даже возможность использовать инфраструкту- ру .НЕТ для доступа к информации, внеш- ней по отношению к СУБД БОБ Вепгег Вызываются после начала выпол- нения обрабатывающей основной части оператора.
ХаРактеризуются высокими из- держками Триггеры Триггеры должны использоваться только в том случае, если ограничения не позволяют достичь намеченной цели. Как и ограничения, триггеры закрепляются за таблицей и должны быть вновь переопределены после создания каждой новой таблицы. Значительным преимуществом триггеров является то, что с их помощью можно осуществить большинство действий по обеспечению целостности данных, которые могут когда-либо потребоваться. И действительно, в свое время триггеры лежали в основе общепринятого способа принудительной поддержки ограничений внешних ключей (до тех пор, пока не были введены ограничения внешних ключей как отдельные конструкции). Эта тема рассматривается более подробно в одной из следующих глав книги.
Таким образом, для обеспечения целостности данных следует преимущественно использовать ограничения. Эти конструкции являются быстродействующими, а задача их создания не так уж сложна. Недостаток ограничений состоит в том, что их функциональные возможности строго лимитированы (в частности, любые ограничения, кроме ограничений внешнего ключа, не позволяют ссылаться на другие таблицы). А если в базе данных широко применяются однотипные условия ограничений, то приходится заниматься однообразной и скучной работой — переопределять одни и те же ограничения снова и снова. 250 Глава 6 Йезевисимр оу.:тоге;;какой; мехайизм' обеспечеяйя Целостирсуи, 'яведьится.'в'дейсствие::~хлю' :чи триггесры';-огреиичения;;-пргвгиее' 'йедэеиныечигугмолчению''знвченият',,;-всегдя'следует, уяятмеетвт-руЕКОМЕНдвцИКХ-'Крт~фув'-'Мэсжис 'Емреантв ОДНИМ.-'.СЛОяди': —,;ОбОСНрсяаННОСтЬ', $йядый;новь й обьехт,: создзвяемыйябазегдениысхс,' вносит: дсойолноитеят" йре 'издержют,аозтсму;.-',прсех~йхе' чем,'.евест~ хйкор'-'либо' допблнелие' я."разутуейййщ",,необходимо.';тть4тельно взвесить;-оправддио-.ли",такое дьопсолнение,-, 'Ийоегайте,"таких='ойибсх; квкмзбыточные,ре.
елгизеции 'Срегдств46еспечения,,'целоатйрсти::денных:~наяример,',трудно.утеже йрсетстевитв себе рхслько'.'ряз ввторуу.приходилось:сттелкиевться.'~:.таким-пррййтбм,''6езы,'дуеннйх," в-'ко» :тором': ллся: Фбеопечеиия-ссуытлочлой целочстности' были,'опбрделены"еиеаниехлючя;: и для 'рсвшгеиьш той же,:'задачи:дойолнигтелыяучиспользовмись",тряггйсрЫ)'; дрекде-чем'ввести ле-;, .бьш огрвиичеиил;; промрьте;.'йкекие'ограничения:у4е зйданы',чи:убедитесь"в'.три;:что Майе. чейные х."евозду='огграийчениятгййбувителмо, позвголят,„йелучитьте'результаты;-'.Йе:.'котосрые вгх,рвссчитываетее.
Резюме В настоящей главе описаны механизмы обеспечения целостности данных различных типов, без которых невозможно создать бесперебойно функционирующую базу данных. По-видимому, одним из наибольших преимуществ реляционных СУБД является то, что они позволяют возложить ответственность за обеспечение целостности данных на базу данных, а не рассчитывать исключительно на безукоризненную работу приложения. Благодаря этому появляется возможность добиваться соблюдения правил обработки данных даже при выполнении произвольных запросов, а также разрабатывать многочисленные приложения на основе единого подхода к решению проблем целостности данных.