Мегаобучалка Главная | О нас | Обратная связь


Генерация и корректировка текста скрипта БД (DDL-сценария)



2016-09-16 460 Обсуждений (0)
Генерация и корректировка текста скрипта БД (DDL-сценария) 0.00 из 5.00 0 оценок




После корректировки типов и размера полей физической модели следует выбрать пункт основного меню Tasks, Forward Engineer/Schema GenerationERwin 4.0 пункт Task соответствует Tools).Появитсяокно, в котором задаются режимы генерации операторов языка SQL. Рекомендуется отменить генерацию триггеров (отключить все опции в пункте Trigger) и исключений (ERWin Exception в Other Options). Также следует указать, что первичные и внешние ключи описываются при создании таблицы (на уровне таблицы), а не при ее обновлении (ALTER), что сократит текст файла и повысит наглядность (рис. 8).

Рис. 8. Установка режима генерации скрипта.

Нажимая на кнопку Preview... (Предварительный просмотр) и меняя режимы генерации, можно проследить за изменениями текста скрипта.

После этого следует нажать кнопку Report.... Необходимо указать путь для сохранения скрипта и имя файла. При этом будет сгенерирован текстовый файл с расширением .sql. Для нашей модели он будет выглядеть следующим образом (в текст добавлены некоторые комментарии):

 

/*Создание таблицы Class*/

CREATE TABLE Class (

num_class INTEGER NOT NULL,

nameclass VARCHAR(3) NOT NULL,

kol_pupil INTEGER,

PRIMARY KEY (num_class) /* установка первичного ключа */

);

 

/* Создание индекса по ключу для таблицы Class*/

CREATE UNIQUE INDEX XPKClass ON Class

(

num_class

);

 

/*Создание таблицы Pupil*/

CREATE TABLE Pupil (

num_pupil INTEGER NOT NULL,

num_class INTEGER,

FIO_pupil CHAR(20) NOT NULL,

ball NUMERIC(4,2) NOT NULL,

PRIMARY KEY (num_pupil), /* установка первичного ключа */

FOREIGN KEY (num_class) /*Установка внешнего ключа для*/

REFERENCES Class /*связи с таблицей Class*/

);

 

/* Создание индекса по ключу для таблицы Pupil*/

CREATE UNIQUE INDEX XPKPupil ON Pupil

(

num_pupil

);

 

/* Создание индекса по внешнему ключу для таблицы Class*/

CREATE INDEX XIF7Pupil ON Pupil

(

num_class

);

 

/*Создание таблицы Teacher*/

CREATE TABLE Teacher (

num_teacher INTEGER NOT NULL,

FIO_teacher VARCHAR(20) NOT NULL,

PRIMARY KEY (num_teacher)/* установка первичного ключа */

);

 

/* Создание индекса по ключу для таблицы Teacher*/

CREATE UNIQUE INDEX XPKTeacher ON Teacher

(

num_teacher

);

 

/*Создание таблицы Predmet*/

CREATE TABLE Predmet (

num_predmet INTEGER NOT NULL,

namepred VARCHAR(20) NOT NULL,

PRIMARY KEY (num_predmet)/* установка первичного ключа */

);

 

/* Создание индекса по ключу для таблицы Predmet*/

CREATE UNIQUE INDEX XPKPredmet ON Predmet

(

num_predmet

);

 

/*Создание таблицы Teach_Pred*/

CREATE TABLE Teach_pred (

num_teach_pred INTEGER NOT NULL,

num_predmet INTEGER,

num_teacher INTEGER,

nagruzka INTEGER NOT NULL,

PRIMARY KEY (num_teach_pred),/*установка первичного ключа*/

FOREIGN KEY (num_predmet)/*Установка внешнего ключа для*/

REFERENCES Predmet, /*связи с таблицей Predmet*/

FOREIGN KEY (num_teacher)

REFERENCES Teacher /*связи с таблицей Teacher*/

);

 

/* Создание индекса по ключу для таблицы Teach_Pred*/

CREATE UNIQUE INDEX XPKTeach_pred ON Teach_pred

(

num_teach_pred

);

 

/* Создание индекса по внешнему ключу num_teacher для Teach_pred*/

CREATE INDEX XIF8Teach_pred ON Teach_pred

(

num_teacher

);

 

/* Создание индекса по внешнему ключу num_predmet для Teach_pred*/

CREATE INDEX XIF9Teach_pred ON Teach_pred

(

num_predmet

);

 

Данный скрипт нуждается в доработке (в основном это касается требований к значениям столбцов таблиц и обеспечения ссылочной целостности), для чего его можно открыть, например, в блокноте. Ключевые поля num_ИмяТаблицы должны идти первыми в описании таблицы (если это не так – необходимо переставить их на первое место).

Рассмотрим поле nagruzka таблицы Teach_pred. Пусть нагрузка (в неделю) может принимать значения в диапазоне от 0 до 22 часов. Ограничения, накладываемые на столбцы таблицы, определяются при помощи предложения CHECK. Например, ограничение на значение поля nagruzka, можно записать так:

 

CHECK (nagruzka>=0 and nagruzka<=22) или

CHECK (nagruzka between 0 and 22)

 

Аналогично, для среднего балла таблицы Pupil:

 

CHECK (ball between 0 and 5)

 

Предложение CHECK можно описывать на уровне столбца (при его объявлении) или на уровне таблицы (после описания всех полей).

Пусть нагрузка по умолчанию (если значение нагрузки не введено) принимает значение нуля). Тогда данное значение записывается после ключевого слова DEFAULT (вместо not null):

 

CREATE TABLE Teach_pred (

num_teacher INTEGER NOT NULL,

num_predmet INTEGER NOT NULL,

nagruzka INTEGER DEFAULT 0,

PRIMARY KEY (num_teach_pred),

FOREIGN KEY (num_predmet)

REFERENCES Predmet,

FOREIGN KEY (num_teacher)

REFERENCES Teacher,



2016-09-16 460 Обсуждений (0)
Генерация и корректировка текста скрипта БД (DDL-сценария) 0.00 из 5.00 0 оценок









Обсуждение в статье: Генерация и корректировка текста скрипта БД (DDL-сценария)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (460)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)