
- •Задание на работу
- •1.1. Разработать проект каркаса для работы со спецификациями изделий
- •1.2. Содержание работы
- •1.3. Исходные данные для задачи
- •1.4. Рекомендуемые инструменты
- •1.5. Рекомендуемые источники
- •Аннотация
- •1. Описание выполненной работы
- •1.1. Анализ исходных данных
- •1.2. Разработка функциональных требований к подсистеме
- •1.3. Разработка модели классов
- •1.4. Разработка модели хранения в среде субд данных классификатора изделий
- •1. Разработка erd
- •2. Создание базы данных
- •3. Подготовка скриптов метаданных
- •1.5. Разработка основных процедур
- •1.6. Тестирование разработки
1.2. Разработка функциональных требований к подсистеме
В директории UseCase Model создадим диаграмму вариантов использования с именем Работа с классификатором изделий.
На рис. 7 приведена диаграмма ВИ Работа c классификатором.
Рис. 7. Диаграмма ВИ для задачи Работа с классификатором
1.3. Разработка модели классов
Модель классов для ВИ Работа с классификатором представлена на рис. 8.
Рис. 8. Модель классов для ВИ Ведение классификатора
Описание компонентов диаграммы.
Структура классификации описывается с использованием метакласса Класс изделия. Зависимости между классами моделируются ассоциацией Потомки. В качестве атрибутов метакласса выделены Имя и Обозначение. Введено несколько операций метакласса:
Создать() – создает новый класс;
Выбрать родителя() – позволяет выбрать родительский класс для текущего класса;
Изменить родителя() – позволяет сметить родителя у класса;
Изменить порядок() – позволяет изменить порядок классов потомков при выводе.
1.4. Разработка модели хранения в среде субд данных классификатора изделий
1. Разработка erd
Первоначально опишем модель хранения в виде ERD. Для этого воспользуемся графическим редактором Visio. Модель Database.Entity relationship.
Рис. 9. ERD для задачи Работа с классификатором изделий
Сущность CHEM_CLASS позволяет хранить данные о структуре классификатора. Поле BASE_EI позволяет указать единицу измерения количества изделия. Поле MAIN_CLASS позволяет описать дерево классификации изделий.
Сущность PROD позволяет вести каталог изделий. Поле ID_CLASS позволяет указать терминальный класс изделия. Поля SHORT_NAME, NAME позволяют указать обозначение и имя изделия.
2. Создание базы данных
В соответствии с документом ( файл Создание и настройка Базы данных Firebird 2.docx) создаем базу данных LAB1372_01.FDB в директории D:\DUB\LETI\IS_LETI:
Рис. 10. Регистрация базы данных в IBexpert
Регистрируем базу данных в BDE:
Рис. 11. Регистрация базы данных в BDE
3. Подготовка скриптов метаданных
Таблицы, первичные и внешние ключи, генераторы.
Для каждой сущности создаем таблицы с описанием полей.
/* Единицы измерения*/
/* Создание таблицы*/
CREATE TABLE EI (
ID_EI INTEGER NOT NULL,
SHORT_NAME VARCHAR(10),
NAME VARCHAR(50)
);
/* Добавление поля*/
alter TABLE EI
add CODE varchar(15);
/* Объявление первичного ключа*/
ALTER TABLE EI ADD PRIMARY KEY (ID_EI);
/* Объявление генератора для генерации значения идентификатора*/
CREATE GENERATOR EI_GEN;
/* Создание процедуры для вызова генератора*/
create procedure GEN_ID_EI
returns (
ONEW integer)
as
begin
/*функция: возвращает новый уникальный идентификатор oNew*/
oNew=GEN_ID(EI_GEN,1); /*вызов генератора*/
suspend;
end
/* Пример вызова генератора
select oNew from GEN_ID_EI
into :vId; . */
Пример представления метаданных таблицы в «IBexpert» представлен на рис. 12.
Рис. 12. Пример просмотра метаданных таблицы
/*Классы изделия*/
CREATE TABLE CHEM_CLASS (
SHORT_NAME VARCHAR(10),
ID_CLASS INTEGER NOT NULL,
NAME VARCHAR(25),
MAIN_CLASS INTEGER,
BASE_EI INTEGER
);
/***********************Первичный ключ *******************************/
ALTER TABLE CHEM_CLASS ADD PRIMARY KEY (ID_CLASS);
/*******Внешний ключ для указания единицы измерения количества *********/
ALTER TABLE CHEM_CLASS ADD FOREIGN KEY (BASE_EI) REFERENCES EI (ID_EI);
/*******Внешний ключ для указания отношения конкретизации *********/
ALTER TABLE CHEM_CLASS ADD FOREIGN KEY (MAIN_CLASS) REFERENCES CHEM_CLASS (ID_CLASS);
/*******Генератор для классификатора *********/
CREATE GENERATOR CHEM_CLASS_GEN;
/*******Процедура для вызова генератора Классификатора *********/
create procedure GEN_ID_CLASS
returns (
ONEW integer)
as
begin
/*функция: возвращает новый уникальный идентификатор*/
oNew=GEN_ID(CHEM_CLASS_GEN,1); /*вызов генератора*/
suspend;
end
/*******Пример вызова генератора
select oNew from GEN_ID_CLASS
into :vId; *********/
Спецификация таблицы в «IBexpert» приведена на рис. 13.
Рис.13. Пример просмотра таблицы PROD
/********************************************************************/
/********************************************************************/
/*Продукция (Изделия)*/
CREATE TABLE PROD (
ID_PROD INTEGER NOT NULL,
SHORT_NAME VARCHAR(50),
NAME VARCHAR(250),
ID_CL INTEGER NOT NULL
);
ALTER TABLE PROD ADD PRIMARY KEY (ID_PROD);
/************ Объявление внешнего ключа для указания класса изделия ***********/
ALTER TABLE PROD ADD FOREIGN KEY (ID_CL) REFERENCES CHEM_CLASS (ID_CLASS);
/*************************Объявление генератора*************************/
CREATE GENERATOR PROD_GEN;
create procedure GEN_ID_PROD
returns (
ONEW integer)
as
begin
/*функция: возвращает новый уникальный идентификатор*/
oNew=GEN_ID(PROD_GEN,1); /*вызов генератора*/
suspend;
end
/**************************************************************************/
/*******Пример вызова генератора
select oNew from GEN_ID_PROD
into :vId; *********/
/************************** Триггеры ********************************/
/************* Обнуление ссылок на класс в PROD и CHEM_CLASS********/
CREATE TRIGGER TD_CHEM_CLASS FOR CHEM_CLASS BEFORE DELETE AS
/********************Обнуление ссылок на единицу измерения****************/
CREATE TRIGGER TD_EI FOR EI BEFORE DELETE AS