Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диго С.М. Базы данных проектирование и использование.doc
Скачиваний:
723
Добавлен:
14.05.2016
Размер:
12.04 Mб
Скачать

7.2. Описание базы данных

7.2.1. Описание таблиц

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

Таблица описывается с помощью оператора CREATE TABLE. Таблица определяется путем задания содержащихся в ней столбцов. Все значения в столбце имеют один и тот же тип данных. При описа­нии таблиц могут задаваться ограничения целостности данных.

В стандарте SQL-92 было определено семь типов данных. Одна­ко большинство из них имеют подтипы с собственными именами, используемыми для задания типа данных при определении таблицы. В SQL-99 введено четыре новых типа данных, причем два из них -составные.

Конкретные реализации СУБД работают с различными типами данных. Причем наблюдаются случаи, когда СУБД не поддерживает некоторые из типов данных, определенных в стандарте SQL, и когда, напротив, содержит типы, которые в стандарт не включены. Исполь­зуемые типы данных и форматы их представления особенно важны при обработке распределенных запросов в гетерогенной среде.

Другая важная характеристика языка - это поддержка неопреде­ленных значений. Некоторые системы позволяют работать с неопре­деленными значениями, другие — нет. Эта характеристика является более значимой, чем может показаться на первый взгляд, поскольку поддержка неопределенных значений означает, кроме прочего, ис­пользование трехзначной логики при обработке значений вместо двузначной.

Структуру существующей таблицы можно изменять с помощью оператора ALTER TABLE.

Таблицы могут быть удалены с помощью оператора DROP TABLE.

Таблицы, используемые в каком-либо приложении, включаются в базу данных. База данных обычно содержит несколько таблиц, а также и цдексы и некоторые другие информационные объекты. В некоторых СУБД имеется оператор CREATE DATABASE. В стандарте SQL для аналогичных целей используется оператор CREATE SCHEMA.

Метаинформация в SQL-системах хранится также в виде реляци­онных таблиц (базы данных, основанные на таком принципе, называ­ют самоописываемыми).

7.2.2. Ограничения целостности

Декларативное задание ограничений целостности. Ограниче­ния целостности определяют допустимые значения базы данных пу-тем ограничения значений в базовых таблицах. В SQL большая часть ограничений целостности задается при описании таблицы. Возмож­ность декларативного задания ограничений целостности является одним из существенных отличий стандарта SQL-89 и последующих от стандарта SQL-86.

При описании базы данных может быть задан ряд ограничений целостности.

  1. Спецификация уникальности:

  • определение первичного ключа;

  • задание признака уникальности поля/совокупности полей.

  1. Ограничение на столбец:

  • ограничение на неопределенное значение;

  • задание проверочных ограничений на строки таблицы (ограни­чения контроля).

  • Определение ограничений целостности связей (ссылки между таблицами);

    К этому типу ограничений примыкает возможность задания зна­чений столбца по умолчанию при занесении строки в таблицу.

    Ограничения целостности задаются с помощью определенных конструкций языка описания схемы при описании таблицы.

    Определение ограничения уникальности (unique constraint definition) требует, чтобы никакие две строки в таблице не имели оди­наковых значений в указанном столбце или совокупности столбцов.

    Это ограничение позволяет определить вероятные ключи табли­цы. Тот из вероятных ключей, который выбран в качестве первично­го, описывается как PRIMARY KEY. Ограничение PRIMARY KEY может использоваться только один раз для каждой таблицы. Осталь­ные вероятные ключи могут быть определены путем использования ограничения UNIQUE.

    Спецификация NOT NULL требует, чтобы никакие значения в столбце не были неопределенными значениями.

    Для определения ограничения ссылок (referential constraint definition) используются ограничения FOREIGN KEY и REFERENCES. После ключевых слов FOREIGN KEY в круглых скоб­ках указывается список имен описываемой таблицы (ссылающейся таблицы, • порожденной таблицы). После ключевого слова REFERENCES указывается имя таблицы, которая содержит родитель­ский ключ, и далее в круглых скобках - список столбцов, составляю­щих этот первичный ключ. В принципе ссылающаяся таблица может быть той же самой таблицей, что и целевая таблица.

    Определение проверочного ограничения (check constraint definition) требует, чтобы указанное в нем условие (search condition) было ис­тинным для каждой строки таблицы.

    Момент проверки ограничения целостности зависит от конкрет­ной реализации. Стандарт SQL-92 позволяет определить ограниче­ния таким образом, чтобы они не проверялись до завершения теку­щей транзакции. Вводятся понятия неотложенное и отложенное ограничение целостности. По умолчанию ограничения определяют­ся как неотложенные. Неотложенные ограничения проверяются при выполнении каждого оператора SQL (SQL statement). Если базовая таблица, ассоциированная с ограничением целостности, не удовлет­воряет его условию, то оператор SQL не выполняется.

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

    Триггеры обычно ассоциируют с операциями обновления (UPDATE), вставки (INSERT) и удаления (DELETE) в таблице. Триг­геры часто используются для задания различных проверок целост­ности данных при выполнении упомянутых выше операций.

    Триггеры не определены в стандарте SQL, но поддерживаются практически во всех SQL-серверах и даже во многих настольных СУБД. Типы возможных триггеров и их синтаксис сильно различа­ются от системы к системе.