|
Программирование >> Реализация баз данных
только к тем данным, которые уже находятся в базе данных. Отключение этих ограничений позволяет данные без проверки этими ограничениями; Отключите ограничение FOREIGN KEY во время если оно относится к исходной базе данных. Во врем реплика- ции таблицы ее определение и данные копируются из исходной базы данных в целевую. Эти две базы данных обычно (но не обязательно) располагаются на отдельных серверах. Если во врем икаиии не отключить ограничения FOREIGN KEY в исходной базе данных, возможно появление излишних запретов на ввод новых данных в целевую базу данных. Ограничения CHECK Ограничение СК обеспечивают доменную целостность путем ограничения значений, которые разрешено ввести в столбец. Этим они похожи на ограничения FOREIGN KEY. Отличие между ними заключается в способе определения допустимых значений. Ограничения FOREIGN KEY получают список допустимых значений из другой таблицы, а ограничения CHECK определяют их на основе логического выражения, в которое не входят данные из другого столбца. Например, можно ограничить диапазон значений столбца со сведениями о зарплате, создав ограничение CHECK, которое допускает только значения от до Эта функция предотвращает ввод значений, которые выходят за пределы нормального диапазона зарплаты. Можно создать ограничение CHECK с помощью любого логического выражения, которое TRUE или FALSE в зависимости от используемого опе- ратора. Вот как выглядит логическое выражение, только значения из ин- тервала$151:ЮО-$10<Ю00: salary >= 15000 AND salary = 100000 К одному столбцу разрешается применить несколько ограничений CHECK, которые проверяются в порядке их создания. Кроме того, можно применить одно CHECK к нескольким столбцам, если создать его на уровне Например, сред- ствами ограничения CHECK, определенного для нескольких столбцов, удается подтвердить, что в любой строке, где значение поля равно в поле находится значение, состоящее из двух символов. Эта функция позволяет проверить в одном месте несколько условий. Создание ограничений CHECK Ограничение CHECK создают одним из следующих во время создания таблицы (в составе определения таблицы); добавляют ксуществующей таблице. Созданные ограничения CHECK разрешено модифицировать и удалять. Например, можно модифицировать выражение, которое использовано в ограничении опре- деленном для столбца или таблицы. Примечание Чтобы модифицировать ограничение CHECK с помощью t-SQL. сначала следует удалить существующее определение ограничения CHECK, а затем создать новое определение. В этом примере создается вда Table I и определяется для столбца Со12 ограничение CHECK, которое ограничивает вводимые значения диапазоном CREATE TABLE Tablel Col INT PRIMARY KEY, Col2 INT CONSTRAINT an-ount CHEC Ol2 BETWEEN 0 AND 1000), Col3 :iCHAH(30) ) Это ограничение также можно определить на уровне таблицы: CREATE TABLE labl&l ( Coll INT PRIMARY KEY, Со12 INT, Col3 VARCHAR(30), CONSTRAINT Liirdt amount CHECK (ColS BETWEEN 0 AND 1000) ) Чтоб BHTi. ограничение СН ЕСК к существующее ице. можно воспользоваться оператором ALTER TABLE: ALTER TABLE Tablel ADD CONSTRAINT li[nit a(noiJnt CHECK (Col2 BETWEEN 0 AND 1000) При добавлении к существующей таблице ограничение CHECK применяется ько к новым данным или ко всем данным таблицы, включая теуюшлс- По умолчанию ограничение CHECK применяется как укиним, так и ко всем новым данным. Возможность применить ограничение только к новым данным полезна, если существующие уже соответствуют новому ограничению CHECK или если бизнес-правило требует, чтобы ограничение применялось, только начиная с этого момента. Например, раньше длина почтового индекса ограничивалась пятью цифрами, а по новому правилу действуют девятизначные почтовые индексы. Старые правила, определяющие пятизначные почтовые индексы, все еще действительны и с новыми, устанавливающими девятизначные почтовые индексы. Однако нужно быть осторожным при добавлении ограничения без проверки существующих данных, поскольку это совершается в обход контроля SQL Server, чивающего целостность данных Отключение ограничений CHECK м. Следует отключать существующие ограничения при выполнении дей- ствий: Следует отключить ограничение CHECK на время выполнения операторов INSERT и UPDATE, если известно, что новые данные нарушат это ограничение, или если ограничение следует применять только к тем данным, которые уже находятся в базе данных. Отключение этого ограничения позволит модифицировать данные без проверки этими ограничениями; Отключите ограничение CHECK во время репликации, если оно относится к исходной базе данных. Во врем репликации таблицы ее определение и данные копируются из исходной базы данных в целевую. Эти две базы данных обычно (но не обязательно) располагаются на отдельных серверах. Если во время репликации не отключить ограничения СН ЕСК в исходной базе воз- можно появление излишних запретов на ввод новых данных в целевую базу даннгх. 162 Обеспечение Глава 5 Упражнение 2. Добавление ограничений в существующие таблицы В этом упражнении вы добавите ограничения к таблицам, созданным в базе данных BookShopDB. Для этогс потребуется модель данных и бизнес-правила, определенные в упражнении 3 главы 3. Обратите внимание, что в каждой таблице должен быть первичный ключ. В некоторгх случаях он состоит из двух столбцов. Кроме того, для некоторых таблиц потребуются внешние ключи, а для таблицы Customers - ограничение CHECK. Бизнес-правила и модель данных подскажут, когда следует определять ограничения. Например, одно из относящихся к таблице Boots, гласит, что в столбце ConditionlD должны быть значения из стхэлбца ConditionlD таблицы BookCondition. Этхэ правило требует определить для с i олбца ConditionlD таблицы Books ограничение FOREIGN KEY, которое ссылается на столбец CondiiionlD таблицы BookCondition, Чтобы выполнить это упражнение, необходимо зарегистрироваться в качестве администратора на компьютере иод управлением Wincows 2000 Server. ► Добавление ограничения PRIMARY KEY к таблице Authors 1. Обратитесь к бизнес-правилам и структуре базы данных и найдите столбец (или столбцы таблицы Autliors, для которых следует определить ограничение PRIMARY KEY. На данном этапе процесса базы данных необходимо определиться, какие столбим следуем тзирошиь как первичный ключ. Помните, что ограничение PRIMARY KEY задают для столбца значения которых уникально иденти- фицируют каждую строку Для какого столбца (или столбцов) следует определить ограничение PRIMARY KEY? 2. Откройте SQ lery Analyzer и подключитесь к локальному серверу. 3. Введите на нанели Editor в окне Query следующий код на Transact-SQL: USE BookShopDB ALTER TABLE Authors , ADD CONSTRAINT authors pk PRIMARY KEY (AuthorlD) , . Этот оператор добавляет к столбцу Authorl Г.) таблицы Authors из базы данных BookShopDB ограничение PRIMARY KEY (authorak). 4. Исполните оператор Transact-SQL. На вкладке Messages панели датся сообщение об успешном завершении команды. Добавление ограничения PRIMARY KEY к 1. Обратитесь к бизнес-прави.пам и структуре базы данных и найдите столбец (или столбцы) таблицы BookAuthors, для которых надо определить ограничение PRIMARY KEY Для какого столбца (или столбцов) таблицы BookAuthors следует определить ограничение PRIMARY KEY? 2. Введите на панели Editor в окне Query следующий код на Transact-SQL: ALTER TABLE BookAuthors ADD CONSTRAINT iiookauthnr n PRIMARY KEY (AuthorlD, TitleTD) Этхэт оператор добавляет к комбинации столбцов AuthorlD и TitlelD ограничение PRIMARY KEY (bookauthors pk) 3. Исиолните оператор Transact-SQL.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |