|
Программирование >> Программирование баз данных
В версии SQL Server 2000 впервые получили свою поддержку две наиболее широко используемые формы обеспечения ссылочной целостности - каскадные обновления и каскадные удаления. До тех пор пользователи выражали свое недовольство в связи с отсутствием поддержки этих средств, но компания Microsoft оставила нереализованными также некоторые другие области обеспечения ссылочной целостности по стандарту ANSI Эти средства были введены в версии SQL Server 2005. Каскадные действия и другие средства обеспечения ссылочной целостности, соответствующие стандарту ANSI, будут подробно описаны при рассмотрении ограничений внешнего ключа, FOREIGN KEY. Кроме того, в настоящей главе будут очень кратко описаны триггеры и хранимые процедуры как методы реализации правил обеспечения целостности данных. данных. Это отнюдь не означает, что любгш попытка вставки данных в базу данных должна теперь осуществляться успешно, но в ответ на возможные нарушения в работе, которые могут при этом возникнуть, современнгш база данных действует превентивно, а не пытается лишь исправить возникающие ошибки. В настоящее время существует возможность заблаговременно, еще на этапе разработки базы данных, исключать значительную часть причин появления в ней ошибок, связанных с неправильной работой приложения, поскольку для обеспечения целостности данных может применяться сама база данных. Эта задача решается прежде всего с помощью ограничений целостности. (К числу наиболее широко применяемых средств обеспечения целостности данных относятся типы данных и триггеры.) В настоящей главе в основном рассматриваются ограничения целостности трех указанных ниже типов. Ограничения сущностей. Ограничения домена. Ограничения ссылочной целостности. Кроме того, более подробно будут рассматриваться конкретные методы реализации каждого из ограничений этих типов, включгш перечисленные ниже. Ограничения первичного ключа (PRIMARY KEY). Ограничения внешнего ключа (FOREIGN KEY). Ограничения уникальности (UNIQUE, именуемые также ограничениями альтернативного ключа). Ограничения проверки (CHECK). Ограничения заданных по )олчанию значений (DEFAULT). Правила. Заданные по умолчанию значения (подобные ограничениям DEFAULT, но все же отличные от них). Типы ограничений целостности Предусмотрен целый ряд способов реализации ограничений, но все эти способы относятся к одной из трех категорий - ограничения сущностей, ограничения домена и ограничения ссылочной целостности (рис. 5.1). Ограничение ссылочной целостности Ограничение домена Ограничение сущности
Puc. 5.1. Примеры ограничений трех категорий Ограничения домена Ограничения домена распространяются на один или несколько столбцов. Они обеспечивают достижение того, чтобы какой-то конкретный столбец или ряд столбцов удовлетворял конкретным критериям. Эти ограничения применяются при вставке или обновлении строки без учета того, что в таблице имеются какие-либо иные строки; интерес представляют только данные рассматриваемого столбца. Например, как ограничение домена рассматривается такое ограничение, с помощью которого требуется обеспечить наличие в столбце Unit Price только значений, больших или равных нулю. С учетом этого ограничения будет отвергнута любая строка, в которой значение UnitPrice не отвечает указанному условию, но тем самым фактически принудительно поддерживается правило обеспечения целостности, позволяющее гарантировать соответствие указанному ограничению всего столбца (независимо от того, сколько строк имеется в рассматриваемой таблице). В качестве домена служит столбец, а ограничение представляет собой ограничение домена. Ограничения указанного типа будут рассматриваться при описании ограничений CHECK, правил, заданных по умолчанию значений и ограничений DEFAULT. Ограничения сущности Ограничения сущности полностью относятся к отдельным строкам. В действительности в ограничении этого типа не рассматривается весь столбец в целом. Интерес представляет только какая-то конкретная строка, и самым наглядным ограничением этого типа является такое офаничение, согласно которому в каждой строке таблицы должно присутствовать уникальное значение одного столбца или комбинации столбцов. На первый взгляд может показаться, что такое определение ограничения сущности, согласно которому, допустим, какой-то столбец должен содержать уникальные значения, полностью совпадает с определением ограничения домена. Но фактически дело обстоит иначе. В формулировке ограничения сущности ничего не сказано о том, что данные столбца должны соответствовать какому-то определенному формату или что значения в столбце должны быть больше или меньше какой-то величины. Единственное, что сказано, относится только к определенной строке и предъявляемое к ней требование состоит лишь в том, чтобы содержащееся в ней значение больше не встречалось в какой-либо другой строке в той же таблице. Ограничения такого рода будут рассматриваться в контексте описания ограничений PRIMARY KEY и UNIQUE. Ограничения ссылочной целостности Ограничения ссылочной целостности создаются в том случае, если значения в одном столбце должны согласовываться со значениями в другом столбце (либо в той же таблице, либо, гораздо чаще, в другой таблице). Предположим, что разрабатьшается пршожение, предназначенное для приема заказов на товары, и что это пршожение должно обеспечивать получение оплаты с помощью кредитных карточек. А чтобы иметь возможность получения платежей от компании- эмитента кредитньгх карточек, необходимо заключить с этой компанией торговое соглашение в определенной форме. Кроме того, требуется, чтобы сл)окащие, принимающие заказы, не брали для оплаты кредитные карточки, выпущенные компаниями, от которых не обеспечивается получение платежей. Именно в таком случае вступают в си.71У ограничения ссылочной целостности - с помощью этого ограничения может быть создана таблица, которая в дальнейшем именуется таблицей домена или поисковой таблицей. Таблицей домена называется таблица, единственным назначением которой является предоставление ограниченного списка допустимых значений. В данном случае может быть создана таблица, которая выглядит так, как показано в табл. 5.1. Таблица 5.1. Пример таблицы домена
После этого появляется возможность создать одну или несколько таблиц, которые ссылаются на столбец CreditCardID таблицы домена. Чтобы иметь возможность использовать средства обеспечения ссылочной целостности, необходимо предусма1ривать
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |