154
Глава
8.
Принципы
поддержки
целостности
в
реляционной
модели данных
Чаще
всего
операция
ALTER
TABLE
применяется
в
CASE-системах
при
автомати-
ческой
генерации скриптов создания таблиц
в
базе
данных.
В
этих системах
универсальный алгоритм предполагает сначала создание
всех
таблиц, которые
заданы
в
даталогической
модели,
и
только
после
этого добавляются соответ-
ствующие
связи.
И это
понятно
— в
отличие
от
человеческого разума
искусственный
интеллект
CASE-системы
будет испытывать
затруднения
в
опре-
делении
иерархических
взаимосвязей
таблиц базы данных, поэтому
он
предпо-
читает использовать универсальный алгоритм,
в
котором сначала
все
объекты
определяются,
а
затем
добавляются
соответствующие
свойства
для
атрибутов,
которые
являются внешними ключами
с
указанием требуемых ссылок.
В
этом
случае
все
операции
назначения
внешних ключей
будут
считаться корректны-
ми,
потому
что все
объекты были описаны
заранее,
и для
такого алгоритма
по-
рядок создания таблиц безразличен.
Далее
приведен скрипт, который
был
полу-
чен
при
разработке схемы базы данных
«Библиотека»
в
Po\verDesigner6.1.
По
умолчанию
для
каждой
таблицы
создается
индекс
по
первичному
ключу»
так
что
кроме знакомых операций создания
и
изменения таблиц
мы
увидим
еще и
операцию создания индексов
(CREATE
INDEX),
после изучения физических
моде-
лей
в
базах данных
мы еще
вернемся
к
этой операции,
а
пока примем
ее на
веру.
При
создании
даталогичекой
модели
в
качестве
СУБД
был
выбран
сервер
MS
SQL
Server
6.X,
и для
этого сервера скрипт
был
сгенерирован
на
устроенном
языке
этой
СУБД,
называмом
TransactSQL,
В нем
операция
USE
<икя
базы
дан-
ных>
соответствует операции открытия базы
данных,
а
команда
до
означает
пере-
ход к
выполнению
следующей
команды.
fTf
==Иогг=вивкг===Е=гаа1а£==г==;=я=ноЕз==!==:=я==5!£эяя=1=с!г;й:==ся=1£=зЯ1==ь:==г:
*t
j
f*
Database name:
LIBRARY
*/
/*
DBMS
name:
Microsoft
SQL
Server
6.x */
/*
Created
on:
06.10.00
18:56
*/
I
"ft
==cjos=:=e
=
ее=и====исзи=и==Е=и=аня=с===г:=1======1е'=з==г==:===1=:;=а1=«я
*/
У*
==г=ап====и=е=1=а==а=»в=Е=========аея=»===е=5===езс!Е;веэе=з=!===:=ег
==
е1
*/
/*
Database
name;
LIBRARY
*/
/*
=s
во-йигзоHs=J"=iaa=s==3=ааи==в=======e==:3=j=3==:
a==ess=я=я
e=KJae====J=t==3
*/
use
LIBRARY
90
/*
cts=i===:=ac3S==e=!
SB
я
e==s=£s===s=a
саз
cj=s=========ii====i=Etsci=:c!=ci==«=;=:=
*/
/*
Table: BOOKS
*/
jit
е==еп
о
=JOH
иняиэи
с
именвввеоаsевенеяавявивяяавввявиеезtaяРчиssesesasssi
*/
create
table BOOKS
С
ISBN
varchar(14)
not
null.
TITLE varchar(255>
not
null.
AUTOR
varchar(30)
null,
COAUTOR
varchar(30)
null,
PUBLICHER
varchar(30>
null,