142
Глава
8.
Принципы поддержки целостности
в
реляционной
модели
данных
ски
осуществлять
проверку
на
отсутствие
дубликатов
значений
данного
столбца
во
всей
таблице.
Если
в
разделе ограничений целостности указано ограничение
по
ссылкам дан-
ного
столбца,
то
порождается
соответствующее
определение
ограничения
по
ссылкам
для
таблицы:
FOREIGN
КЕУС<иня
столбца*)
Спецификация
ссылки>,
что
озна-
чает,
что
значения
данного столбца должны быть взяты
из
соответствующего
столбца родительской таблицы. Родительской таблицей
в
данном случае
назы-
вается таблица, которая связана
с
данной
таблицей связью
«один-ко-миогим»
(1:М).
При
этом каждая строка родительской таблицы может быть
связана
с не-
сколькими
строками определяемой таблицы. Трансляция операторов
SQL
про-
водится
в
режиме
интерпретации,
поэтому важно, чтобы сначала была
бы
опи-
сана
родительская таблица,
а
потом
уже все
подчиненные
(дочерние)
таблицы,
связанные
с
ней.
Иначе транслятор определит ссылку
ла
неопределенный
объест.
Наконец,
если указано проверочное ограничение столбца,
то
условие-поиска
этого
ограничения
должно
ссылаться только
на
данный столбец,
и
неявно
поро-
ждается
соответствующее проверочное
ограничение
для
всей таблицы.
В
Прове;
рочных
ограничениях, накладываемых
на
столбец, нельзя задавать сравнение
со
значениями
других столбцов данной таблицы.
В
главе
5
определены типы
данных,
которые допустимы
по
стандартам SQL.
Попробуем
написать простейший оператор создания таблицы
BOOKS
из
базы дан-
ных
«Библиотека».
При
этом будем предполагать наличие следующих ограничений
целостности:
Q
Шифр книги
—
последовательность
символов
длиной
не
более
14,
однознач-
но
определяющая
книгу,
значит,
это —
фактически первичный ключ таблицы
BOOKS.
Q
Название книги
—
последовательность
символов,
не
более
120.
Обязательно
должно
быть задано.
Q
Автор
—
последовательность
символов,
не
более
30,
может
быть
не
задан.
Q
Соавтор
—
последовательность
символов,
не
более
30,
может
бцть
не
задан.
Q
Год
издания
—
целое число,
не
менее 1960
и
не
более текущего года.
По
умолчанию
ставится
текущий
год.
Q
Издательство
—
последовательность
символов,
не
более
20,
может
отсутство-
вать.
Q
Количество страниц
—
целое число
не
менее
5 и
не
более 1000.
CREATE TABLE BOOKS
ISBN
varchar(14)
NOT
NULL PRIMARY
KEY,
TITLE
varchar(120)NOT
NULL.
AUTOR
yarchar
(30)
NULL,
COAUTOR
varcharOO)
NULL.
YEARJ4JBLsmall1nt
pEFAULT
Year(GetDateO)
CHECK(YEARJ>UBL
>=
I960
AND
YEAR
PUBL
<~
YEARCGetDateO».