Теория баз данных

AUTOR IS NULL AND COAUTOR


CONSTRAINT CK_BOOKS CHECK (NOT ( AUTOR IS NULL AND COAUTOR IS NOT NULL))

);

CREATE TABLE READERS

(

READER_ID

Small int

PRIMARY KEY

FIRST_NAME

char(30)

NOT NULL.

LAST_NAME

char(30)

NOT NULL.

ADRES

char(50).



HOME_PHON char(12).

WORK_PHON char(12).

BIRTH_DAY date CHECK( DateDiff(year, GetDate().BIRTH_DAY) >=17 ),

CONSTRAINT CK_READERS CHECK (HOME_PHON IS NOT NULL OR WORK_PHON IS NOT NULL) );

CREATE TABLE CATALOG

(

ID_CATALOG Smallint PRIMARY KEY,

KNOWELEDGE_AREA varchar(150)

);

CREATE TABLE EXEMPLAR

(

ID_EXEMPLAR Int NOT NULL,

ISBN varchar(14) NOT NULL FOREIGN KEY references BOOKS(ISBN),

READER_ID Smallint(4) NULL FOREIGN KEY references REABERS (READER_ID).

DATA_IN date.

DATA_OUT date.

EXIST Logical.

PRIMARY KEY (ID_EXEMPLAR, ISBN)

);

CREATE TABLE RELATION_1

(

ISBN varchar(14) NOT NULL

FOREIGN KEY references BOOKS(ISBN).

ID_CATALOG smallint NOT NULL

FOREIGN KEY references CATALOG(ID_CATALOG).

CONSTRAINT PK_RELATION_1

PRIMARY KEY (ISBN.ID_CATALOG) ).

Операторы языка SQL, как указывалось ранее, транслируются в режиме интерпретации, в отличие от большинства алгоритмических языков, трансляторы для которых выполнены по принципу компиляции. В режиме интерпретации каждый оператор отдельно транслируется, то есть переводится в машинные коды, и тут же выполняется. В режиме компиляции вся программа, то есть совокупность операторов, сначала переводится в машинные коды, а затем может быть выполнена как единое целое. Такая особенность SQL накладывает ограничение на порядок описания создаваемых таблиц. Действительно, если при трансляции оператора описания подчиненной таблицы с указанным внешним ключом и соответствующей ссылкой на родительскую таблицу эта родительская таблица не будет обнаружена, то мы получим сообщение об ошибке с указанием ссылки на несуществующий объект. Сначала должны быть описаны все основные таблицы, а потом подчиненные таблицы.

В нашем примере с библиотекой порядок описания таблиц следующий:

Содержание  Назад  Вперед