Читайте также:
|
|
Основной целью процесса проектирования является генерация физической схемы БД. Для генерации схемы БД следует выбрать пункт меню «Tasks/ Forward Engineer/Schema Generation...».
Рисунок 19 Диалоговое окно генератора схем |
Физическая схема БД генерируется на основе логической схемы и набора установок, задаваемых в диалоговом окне генератора схем (рис. …). Эти установки определяют, какие элементы должны войти в схему БДе диалога содержатся и другие кнопки:
Элементы генерируемой схемы организованы по разделам, список которых находится в левом окне страницы. В правом окне находится список элементов отмеченного раздела с флажками. Для выбора элемента, который должен использоваться при генерации схемы БД, следует проставить флажок рядом с этим элементом.
А теперь можно сгенерировать схему нашей БД:.
1. В диалоговом окне генератора схем на странице «Options» выделите в левом списке объект «Trigger» и уберите все флажки в правом списке;
2. Выделите объект «Index» и уберите все флажки в правом списке;
3. Нажмите «Preview». В окне просмотра появится SQL-скрипт создания БД:
CREATE TABLE AIRCOMPANY (
AC_CODE INTEGER NOT NULL,
AC_NAME VARCHAR( 20 )
);
ALTER TABLE AIRCOMPANY
ADD PRIMARY KEY ( AC_CODE );
CREATE TABLE AIRLINE (
AL_NUM VARCHAR( 20 ) NOT NULL,
AL_AC_CODE INTEGER NOT NULL,
AL_PL_CODE VARCHAR( 20 ) NOT NULL,
AL_NAME VARCHAR( 20 )
);
ALTER TABLE AIRLINE
ADD PRIMARY KEY ( AL_NUM );
CREATE TABLE AIRPORT (
AP_CODE INTEGER NOT NULL,
AP_NAME VARCHAR( 20 ),
AP_CT_CODE INTEGER NOT NULL
);
ALTER TABLE AIRPORT
ADD PRIMARY KEY ( AP_CODE );
CREATE TABLE BOARD (
BRD_NUM INTEGER NOT NULL,
BRD_PL_CODE VARCHAR( 20 ) NOT NULL,
BRG_AC_CODE INTEGER NOT NULL
);
ALTER TABLE BOARD
ADD PRIMARY KEY ( BRD_NUM );
CREATE TABLE CITY (
CT_CODE INTEGER NOT NULL,
CT_NAME VARCHAR( 20 ) NOT NULL
);
ALTER TABLE CITY
ADD PRIMARY KEY ( CT_CODE );
CREATE TABLE EQUIPAGE (
EQ_CODE INTEGER NOT NULL,
EQ_FL_DATE DATE NOT NULL,
EQ_RNK_CODE INTEGER NOT NULL,
EQ_PR_CODE INTEGER NOT NULL,
EQ_FL_NUM VARCHAR( 20 ) NOT NULL
);
ALTER TABLE EQUIPAGE
ADD PRIMARY KEY ( EQ_CODE );
CREATE TABLE FLIGHT (
FL_DATE DATE NOT NULL,
FL_NUM VARCHAR( 20 ) NOT NULL,
FL_BRD_NUM INTEGER NOT NULL
);
ALTER TABLE FLIGHT
ADD PRIMARY KEY ( FL_DATE, FL_NUM );
CREATE TABLE PERSON (
PR_CODE INTEGER NOT NULL,
PR_NAME VARCHAR( 20 )
);
ALTER TABLE PERSON
ADD PRIMARY KEY ( PR_CODE );
CREATE TABLE PLANE (
PL_CODE VARCHAR( 20 ) NOT NULL
);
ALTER TABLE PLANE
ADD PRIMARY KEY ( PL_CODE );
CREATE TABLE RANK (
RNK_CODE INTEGER NOT NULL,
RNK_NAME VARCHAR( 20 )
);
ALTER TABLE RANK
ADD PRIMARY KEY ( RNK_CODE );
CREATE TABLE SALON (
SL_TYPE INTEGER NOT NULL,
SL_NAME VARCHAR( 20 )
);
ALTER TABLE SALON
ADD PRIMARY KEY ( SL_TYPE );
CREATE TABLE SALON_IN_PLANE (
SP_SL_TYPE INTEGER NOT NULL,
SP_PL_CODE VARCHAR( 20 ) NOT NULL,
SP_COUNT INTEGER
);
ALTER TABLE SALON_IN_PLANE
ADD PRIMARY KEY ( SP_SL_TYPE, SP_PL_CODE );
CREATE TABLE TIMETABLE (
TBL_AP_CODE INTEGER NOT NULL,
TBL_AL_NUM VARCHAR( 20 ) NOT NULL,
TBL_DOWN_TIME VARCHAR( 20 ),
TBL_START_TIME DATE,
TBL_NUMBER INTEGER
);
ALTER TABLE TIMETABLE
ADD PRIMARY KEY ( TBL_AP_CODE, TBL_AL_NUM );
CREATE TABLE TARIFF (
TR_CODE INTEGER NOT NULL,
TR_SL_TYPE INTEGER,
TR_AL_NUM VARCHAR( 20 ) NOT NULL,
TR_COST INTEGER,
TR_AP_FROM INTEGER NOT NULL,
TR_AP_TO INTEGER NOT NULL
);
ALTER TABLE TARIFF
ADD PRIMARY KEY ( TR_CODE );
CREATE TABLE TICKET (
TC_NUM INTEGER NOT NULL,
TC_PR_CODE INTEGER NOT NULL,
TC_TR_CODE INTEGER NOT NULL,
TC_FL_DATE DATE NOT NULL,
TC_FL_NUM VARCHAR( 20 ) NOT NULL
);
ALTER TABLE TICKET
ADD PRIMARY KEY ( TC_NUM );
ALTER TABLE AIRLINE
ADD FOREIGN KEY ( AL_AC_CODE )
REFERENCES AIRCOMPANY;
ALTER TABLE AIRLINE
ADD FOREIGN KEY ( AL_PL_CODE )
REFERENCES PLANE;
ALTER TABLE AIRPORT
ADD FOREIGN KEY ( AP_CT_CODE )
REFERENCES CITY;
ALTER TABLE BOARD
ADD FOREIGN KEY ( BRG_AC_CODE )
REFERENCES AIRCOMPANY;
ALTER TABLE BOARD
ADD FOREIGN KEY ( BRD_PL_CODE )
REFERENCES PLANE;
ALTER TABLE EQUIPAGE
ADD FOREIGN KEY ( EQ_RNK_CODE )
REFERENCES RANK;
ALTER TABLE EQUIPAGE
ADD FOREIGN KEY ( EQ_PR_CODE )
REFERENCES PERSON;
ALTER TABLE EQUIPAGE
ADD FOREIGN KEY ( EQ_FL_DATE, EQ_FL_NUM )
REFERENCES FLIGHT;
ALTER TABLE FLIGHT
ADD FOREIGN KEY ( FL_BRD_NUM )
REFERENCES BOARD;
ALTER TABLE FLIGHT
ADD FOREIGN KEY ( FL_NUM )
REFERENCES AIRLINE;
ALTER TABLE SALON_IN_PLANE
ADD FOREIGN KEY ( SP_PL_CODE )
REFERENCES PLANE;
ALTER TABLE SALON_IN_PLANE
ADD FOREIGN KEY ( SP_SL_TYPE )
REFERENCES SALON;
ALTER TABLE TIMETABLE
ADD FOREIGN KEY ( TBL_AL_NUM )
REFERENCES AIRLINE;
ALTER TABLE TIMETABLE
ADD FOREIGN KEY ( TBL_AP_CODE )
REFERENCES AIRPORT;
ALTER TABLE TARIFF
ADD FOREIGN KEY ( TR_AP_TO, TR_AL_NUM )
REFERENCES TIMETABLE;
ALTER TABLE TARIFF
ADD FOREIGN KEY ( TR_AP_FROM, TR_AL_NUM )
REFERENCES TIMETABLE;
ALTER TABLE TARIFF
ADD FOREIGN KEY ( TR_AL_NUM )
REFERENCES AIRLINE;
ALTER TABLE TARIFF
ADD FOREIGN KEY ( TR_SL_TYPE )
REFERENCES SALON;
ALTER TABLE TICKET
ADD FOREIGN KEY ( TC_FL_DATE, TC_FL_NUM )
REFERENCES FLIGHT;
ALTER TABLE TICKET
ADD FOREIGN KEY ( TC_TR_CODE )
REFERENCES TARIFF;
ALTER TABLE TICKET
ADD FOREIGN KEY ( TC_PR_CODE )
REFERENCES PERSON;
Для каждой таблицы, входящей в модель, генерируются запросы, заданные в опциях объекта Table. В данном случае это:
CREATE TABLE - создание таблицы;
ALTER TABLE... ADD PRIMARY KEY - добавление первичного ключа;
ALTER TABLE... ADD FOREIGN KEY - добавление внешнего ключа.
Использование IB Expert для работы с базой данных [1]
Дата добавления: 2015-12-08; просмотров: 97 | Нарушение авторских прав