Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Расширенные возможности SQL

Что такое ограничения

        Было разработано много версий языка SQL, прежде чем он стал столь полноценным и мощным. Многие из наиболее эффективных инструментов манипуляции с данными основаны на таких методах, которые обеспечиваются с помощью ограничений.

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

       Чтобы реляционная база данных работала должным образом, необходимо удостовериться в том, что данные в ее таблицы введены правильно. Например, если в таблице Orders хранится информация о заказе, а в Orderltems — его детальное описание, вы должны быть уверены, что все идентификаторы заказов, упомянутые в таблице Orderltems, существуют и в таблице Orders. Аналогично, каждый клиент, упомянутый в таблице Orders, не должен быть забыт и в таблице Customers.
Хотя вы можете проводить соответствующие проверки, прежде чем вводить новые строки (выполняя оператор SELECT для другой таблицы, дабы удостовериться в том, что нужные значения правильны), лучше избегать такой практики по следующим причинам.
      •     Если правила, обеспечивающие целостность базы данных, принудительно осуществляются на клиентском уровне, их придется выполнять каждому клиенту (некоторые из клиентов наверняка не захотят этого делать).
      •     Вам придется принудительно ввести правила для выполнения операций UPDATE И DELETE.
      •     Выполнение проверок на клиентской стороне — процесс, отнимающий много времени.

     Заставить СУБД выполнять эти проверки — метод намного более эффективный. СУБД принудительно обеспечивают целостность на уровне ссылок за счет ограничений, налагаемых на таблицы базы данных. Большинство ограничений вводится в определениях таблиц (с помощью операторов CREATE TABLE или ALTER TABLE, об этом рассказывалось в разделе, "Создание таблиц и работа с ними").

Предупреждение

Существует несколько типов ограничений, и каждая СУБД обеспечивает свой собственный уровень их поддержки. Следовательно, примеры, приведенные ниже, могут работать не так, как вы предполагаете. Обратитесь к документации своей СУБД, прежде чем выполнять их.