Языки манипулирования данными. Карепова Е.Д. - 22 стр.

UptoLike

Составители: 

43
CREATE TABLE <имя_таблицы>
( <имя_столбца > <тип_ данных>[(<размер>)] [<ограничение столбца>]
{,[<имя_столбца> <тип_данных>[(<размер>)] [<ограничение столбца>]]...}
[<ограничения таблицы>] );
Поскольку пробелы используются для разделения частей команды
SQL, они не могут быть частью имени столбца или таблицы (или любого
другого объекта, такого как индекс). Во всем остальном имена объектов БД
должны удовлетворять правилам, установленным для идентификаторов, при-
нятых в конкретной реализации.
Как уже было замечено, типы данных значительно зависят от реализа-
ции. Значение же аргумента размера зависит от типа данных.
Остальные ограничения относятся к определению целостности БД и
подробно описаны в следующем пункте.
Поддержание целостности РБД
Поддержание структурной целостности следует рассматривать как
требование работы СУБД только с однородными структурами данных типа
«реляционная таблица». Реляционная таблица должна удовлетворять всем
ограничениям, накладываемым на это понятие в теории РБДотсутствие
картежей-дубликатов, наличие первичного ключа, отсутствие упорядоченно-
сти, как картежей, так и атрибутов.
На практике большинство СУБД обеспечивают автоматическую под-
держку структурной целостности. Исключением является возможность соз-
дания таблиц без первичных ключей. Результаты запроса также обычно не
являются реляционными таблицами, но это суть временные структуры, не
влияющие на целостность БД.
К структурной целостности можно отнести и проблему неопределен-
ных значений NULL. Для сравнения с неопределенным значением необходи-
мо использовать специальный оператор IS [NOT].
Языковая целостность состоит в том, что РСУБД должна обеспечи-
вать языки описания и манипулирования данными не ниже стандарта SQL.
Не должны быть доступны иные низкоуровневые средства манипулирования
данными.
Ссылочная целостность обозначает поддержку внешних ключей с воз-
можностью выбора одного из следующих принципов удаления связанных
картежей:
ON DELETE CASCADE – картежи подчиненного отношения унич-
тожаются при удалении связанных с ними картежей основного отношения.
ON DELETE SET NULL – картежи подчиненного отношения моди-
фицируются в NULL при удалении связанных с ними картежей основного
отношения.
44
ON DELETE RESTRICT – запрет на удаление картежа основного
отношения при наличии картежей подчиненного отношения, связанных с
ним.
Ссылочная целостность обеспечивает поддержку непротиворечивого
состояния БД при модификации данных.
Структурная, языковая и ссылочная целостности достаточно абстракт-
ны, они определяют допустимую форму представления и обработки инфор-
мации в РБД, но не касаются содержания конкретной БД. Для возможности
смыслового описания данных введено понятие семантической целостности.
Выделяют следующие виды ограничений семантической целостности.
Ограничение целостности на уровне столбца (указываются при
описании таблицы в разделе <ограничение столбца>).
Значение по умолчанию: [DEFAULT {<значение> | USER | NULL}]
Здесь ключевое слово USER означает, что при заполнении столбца по
умолчанию ему будет присвоена символьная строка, содержащая имя теку-
щего пользователя.
Ограничение уникальности столбца: [UNIQUE]
Условие проверки на допустимость значения:
CHECK (<булево выражение>)
Здесь <булево выражение> допускает только ссылки на данный стол-
бец.
Запрет неопределенных значений: [NOT NULL]
Порождает условие проверки на допустимость значения:
CHECK (<имя_столбца> IS NOT NULL)
Первичный ключ: [PRIMARY KEY]
Если в таблице одно поле является первичным ключом, то его объявле-
ние эквивалентно связке ограничений [NOT NULL] [UNIQUE]
Ограничение столбца по ссылке: объявление поля внешним ключом.
FOREING KEY REFERENCES
<имя_основной_таблицы>(<имя_первичного_ключа_основной_таблицы>)
[ON DELETE {CASCADE | SET NULL | RESTRICT}]
Основная таблица должна быть описана до описания подчиненной.
Многие СУБД до недавнего времени не поддерживали понятия внеш-
него ключа. Однако на современном этапе все ведущие СУБД предоставляют
такую возможность.
Иногда семантическое ограничение целостности связывает несколь-
ко столбцов, тогда оно является ограничением целостности на уровне таб-
лицы.
Первичный ключ из нескольких столбцов:
[PRIMARY KEY (<имя_столбца> {[,<имя_столбца>]…})]
Условие проверки на допустимость значения: