|
Программирование >> Реализация баз данных
Общие сведения об ограничениях, обеспечивающих целостность Ограничения позволяют определять способы, посредством которых SQL Server 2000 будет автоматически обеспечивать целостность базы данных. Ограничения определяют правила, имеющие отношение к допустимым значениям полей, и являются стандартным icxa-низмом, целостность. Предпочтительней применять т1чення, че этгеры. правила или умолчания. Оптимизатор запросов также использует определения ограничений, чтобы создавать высокопроизводительные планы исполнения Ограничения возможны как для так и для таблиц: ограничение для столбца задается как масть определения столбца и применяется только к этому ограничение для таблицы объявляется независимо от определения столбцов и применяется к нескольким столбцам таблицы. Ограничения для таблиц следует использовать в тех случаях, когда ограничение действует для нескольких столбцов. Например, если первичный ключ таблицы состоит из двух и более столбцов, следует использовать ограничение для таблицы, в которое входят все столбцы первичного ключа. Рассмотрим таблицу, в которой регистрируются события,. происходящие в установленном на фабрике компьютере. Допустим, что одновременно возможны события нескольких различных типов, но никакие два события, произошедшие одновременно, не могу whti.<-si к одному и тому же типу. Чтобы реализовать это правило в таблице, надо включить в первичный ключ два столбца, один из которых хранит тип, а другой - время событий, как показано на примере следующего оператора CREATE TABLE: Занятие 2, Реализация ограничений, обеспечивающих целостность Ограничение - это свойство, назначенное таблице или столбцу таблицы, которое запрещает ввод в указанный столбец (или столбцы) недопустимых значений. Например, ограничения UNIQUE или PRIMARY KEY предотвращают ввод значений, дублирующих уже существующие; ограничение CHECK запрещает ввод значения, не совпадающего с условием поиска; а ограничение FOREIGN KEY обеспечивает связь между данными двух таблиц. Обычно возможность ввода пустых значений и определение DEFAULT обсуждаются в разделах документации, посвященных ограничениям. В Transact-SQL определение DEFAULT на самом деле является одним из типов ограничений. Однако, поскольку возможность ввода пустых значений и определение DEFAUET обсуждаются в главе 4, в этом занятии мы расскажем только об ограничениях PRIMARY KEY, UNIQUE. FOREIGN KEY и CHECK. Изучив материал этого занятия, вы сможете: О описать четыре главных класса ограничений; О реализовать ограничения в базе данных SQL Server. Продолжительность занятия - около 35 минут. ЗакяГ№ 2 Реализаций ограничений, обеспечивающих целостность CREATE TABLE FactoryProcess ( EventType INT, EventTime DATETIME, EventSite CHAR(bO), EventDesc CHAR (1024), CONSTRAINT event kev PRIMARY KEY (EventType, EventTime) SQL Server поддерживает четыре ных класса ограничений: PRIMARY KEY, UNIQUE, FOREIGN KEY и CHECK. Ограничения PRIMARY KEY В таблице обычно есть столбец (или комбинация значения которых уникально идентифицируют каждую строку таблицы. Этот столбец (или столбцы) называются перВИЧНЫМ ключом таблицы и обесцечивает целостность сущностей таблицы. Можно со щать первичный ключ, ограничение PRIMARY KEY при создании или таблицы. В таблице может быть только одно ограничение PRIMARY KEY, причем столбец, который участвует в ограничении, не должен допускать пустых значений. Поскольку огра-ничени ARY KEY гарантируют уникальность данных, они част ляютсл как столбцы с идентификатором. Когда в таблице определено ограничение PRIMARY KEY, SQL Server 2000 обеспечивает уникальность данных, создавая уникальный индекс для столбцов первичного ключа. Этот индекс также обеспечивает быстрый доступ к данным при использовании первичного ключа в запросах. Если ограничение ШАЯУ KEY определено для нескольких столбцов, то в одном столбце значения могут повторяться, но каждая комбинация значений всех столбцов, которые входят в определение ограничения PRIMARY KEY, должна быт ально11. На рис. 5-2 показано формирование из двух столбцов (aujd и title id) таблицы TitleAuthor составного ограничения PRIMARY KEY, гарантирующего уникальность зна- чений этих столбцов. Первичный ключ г.
Создание ограничений PRIMARY KEY Ограничение PRIMARY KEY создают одним уюших способов: во время создания таблице в составе определения таблицы); добавляя ограничение к существующей таблице, если нет другого гаченш PRIMARY KEY. Существующее ограничение PRIMARY KEY можн иироватъ или удалить. Например, в ограничении PRIMARY KEY при желании можно изменить столбцы, на которые ссылается ограничение, порядок столбцов, имя индекса, признак кластеризации или коэффициент заполнения. Изменить длину столбца, для которого определено ограничение PRIMARY KEY, нельзя. Примечание Чтобы модифицировать ограниченик! MARY KEY с помощью TransactSQL, сначала следует удалить существующее определение ограничения PRIMARY KEY, а затем создать новое определение. Следующий оператор CREATE ТАВЕЕ создает таблицу Table 1 и определяет в качестве ее первичного ключа столбец CREATE TABLE Tablel ( Coll INT PRIMARY KEY. Col2 VARCHAfl(30) ) To же самое ограничение определяют с помощью определения PRIMARY KEY на уровне таблицы: CREATE TABLE Coll INT. Со12 VARCHAR(30), CONSTRAINT table pk PRIMARY KEY (Col1) 4 . Еще один способ - добавить ограничение PRIMARY KEY к существующей таблице с помощью оператора ALTER TABLE: ALTER TABLE Tablel ADD CONSTRAINT table pk PRIMARY KEY (Col1) Когда к существующему столбцу (или столбцам) таблицы добавляется ограничение PRIMARY KEY, SQL Server 2000 ппоиеряет имеющиеся в столбцах данные, чтобы гарантировать их соответствие правилам, определенным для первичных ключей: отсутствие пустых значений; отсутствиртюшихся значений. Если ограничение PRIMARY KEY добавляется к столбцу, в котором есть повторяющиеся или пустые значения, SQL Server возвращает ошибку и не добавляет ограничение. Невозможно добавить ограничение PRIMARY KEY с нарушением вышеуказанных правил. SQL Server автоматически создает уникальный индекс, чтобы обеспечить соответствие требованию уникальности, которое выдвигает ограничение PRIMARY KEY. Если в таблице нет кластерного индекса (или не задан явно некластерный индекс), создается уникальный кластерный индекс, реа-иизующи!! ограничение PRIMARY KEY. Внимание! Невозможно удалить ограничение PRIMARY KEY, если нго сс1лается ограничение FOREIGN KEY из другой таблицы. Сначала необходимо удалить ограничение FOREIGN KEY. Ограничения FOREIGN KEY обсуждаются далее в этом занятии.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |