Операторы языка SQL, как указывалось
CONSTRAINT PK RELATION 1 PRIMARY KEY (ISBN,ID CATALOG)
).
Операторы языка SQL, как указывалось ранее, транслируются в режиме интерпретации, в отличие от большинства алгоритмических языков, трансляторы для которых выполнены по принципу компиляции. В режиме интерпретаций каждый оператор отдельно транслируется, то есть переводится в машинные коды, и тут же выполняется. В режиме компиляции вся программа, то есть совокупность операторов, сначала переводится в машинные коды, а затем может быть выполнена как единое целое. Такая особенность SQL накладывает ограничение на порядок описания создаваемых таблиц. Действительно, если при трансляции оператора описания подчиненной таблицы с указанным внешним ключом и соответствующей ссылкой на родительскую таблицу эта родительская таблица не будет обнаружена, то мы получим сообщение об ошибке с указанием ссылки на несуществующий объект. Сначала должны быть описаны все основные таблицы, а потом подчиненные таблицы.
В нашем примере с библиотекой порядок описания таблиц следующий:
147
Таблица BOOKS
Таблица READERS
Таблица CATALOG (системный каталог)
Таблица EXEMPLAR
Таблица RELATION_1 (дополнительная связующая таблица между книгами и системным каталогом).
Набор операторов языка SQL принято называть не программой, а скриптом. Тогда скрипт, который добавит набор из 5 взаимосвязанных таблиц базы данных "Библиотека" в существующую базу данных, будет выглядеть следующим образом:
CREATE TABLE BOOKS
(
ISBN varchar(14) NOT NULL ,
TITLE varchar(120) NOT NULL.
AUTOR varchar (30) NULL.
COAUTOR varchar(30) NULL.
YEAR_PUBL smallint NOT NULL.
PUBLICH varchar(20) NULL.
PAGES smallint NOT NULL.
CONSTRAINT PK_BOOKS PRIMARY KEY (ISBN).
CONSTRAINT DF_ YEAR_PUBL DEFAULT (Year(GetDate( )).
CONSTRAINT CK_ YEAR_PUBL CHECK (YEAR_PUBL >= 1960 AND
YEAR_PUBL
CONSTRANT CK_PAGES CHECK (PAGES > = 5 AND PAGES
CONSTRAINT CK_BOOKS CHECK (NOT (AUTOR IS NULL AND COAUTOR IS NOT NULL))
CREATE TABLE READERS
(
READER_ID Smallint PRIMARY KEY.
Содержание Назад Вперед