Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 сем / 3 / преподское / Пример_оформления_Зад_1_3_2.docx
Скачиваний:
3
Добавлен:
29.03.2025
Размер:
2.06 Mб
Скачать

2. Разработка модели классов

Локальная модель классов для описания типов параметров представлена на рис. 9.

Рис. 9. Модель классов для описания параметров с указанием классов

Метакласс Параметр введен для ведения справочника параметров. Тип параметра задается ассоциацией с ролью Тип параметра. В качестве типа может выступать любой класс из Классификатор объектов.

Модель классов для прецедента Ведение справочника параметров представлена на рис. 10.

Рис. 10. Модель классов для описания параметров

Метакласс Параметр введен для ведения справочника параметров. Для спецификации параметров каждого класса изделий введена ассоциативная сущность Параметры класса, ассоциации Состав параметров и Параметр в состав. Для управления порядком параметров в списке введен атрибут Номер. Для указания ограничений на значения численных параметров введены атрибуты МинЗнач, МаксЗнач.

Для описания типов параметров используем Классификатор объектов. Для задания значений параметров экземпляров изделий введена ассоциативная сущность Значения параметра. Ассоциация Для параметра указывает на параметр, ассоциация Параметры изделия определяет список значений параметров конкретного изделия. Ассоциация Значение параметра перечисления используется только для параметров типа Перечисление. Для значений численных параметров введен атрибут Значение.

3. Разработка модели хранения

Для разработки диаграммы ER воспользуемся редактором «VISIO».

На рис. 11 представлена полная ERD для работы со справочником изделий.

Рис. 11. ERD для проекта Работа со справочником изделий

Сущность PARAMETR1 позволяет вести список параметров. Поле TYEY_P FK1 позволяет указать тип параметра как ссылку на CHEM_CLASS. Ассоциативная сущность PAR_CLASS1 позволяет задать список параметров класса изделий. Поля MIN_VAL и MAX_VAL позволяют указать ограничения для значений численных параметров. Ассоциативная сущность PAR_PROD1 позволяет вести списки значений параметров изделий. Составной ключ позволяет однозначно определить пару (изделие, параметр). Поля VAL_R, VAL_INT, VAL_STR позволяет хранить значение параметра соответствующего типа. Поле ENUMID_VAL позволяет сохранить ссылку на значение параметра типа Перечисление.

Ассоциативная сущность POS_ARG позволяет формировать список параметров для агрегатов.

Ниже представлены скрипты для расширения базы данных:

/*****************************************************************/

CREATE TABLE PARAMETR1 (

ID_PAR INTEGER NOT NULL,

SHORT_NAME VARCHAR(15),

NAME VARCHAR(100),

EI_PAR INTEGER,

TYPE_P INTEGER NOT NULL,

MIN_VAL DOUBLE PRECISION,

MAX_VAL DOUBLE PRECISION

);

ALTER TABLE PARAMETR1 ADD PRIMARY KEY (ID_PAR);

ALTER TABLE PARAMETR1 ADD FOREIGN KEY (EI_PAR) REFERENCES EI (ID_EI);

ALTER TABLE PARAMETR1 ADD FOREIGN KEY (TYPE_P) REFERENCES CHEM_CLASS (ID_CLASS);

ALTER TABLE PAR_CLASS1 ADD PRIMARY KEY (CLASS, PAR);

ALTER TABLE PAR_CLASS1 ADD FOREIGN KEY (CLASS) REFERENCES CHEM_CLASS (ID_CLASS);

ALTER TABLE PAR_CLASS1 ADD FOREIGN KEY (PAR) REFERENCES PARAMETR1 (ID_PAR);

ALTER TABLE PAR_CLASS1 ADD PRIMARI KEY (CLASS, PAR)

CREATE TABLE PAR_PROD1 (

PROD INTEGER NOT NULL,

PAR INTEGER NOT NULL,

VAL_INT INTEGER,

VAL_R DOUBLE PRECISION,

VAL_STR VARCHAR(150),

ENUM_VAL INTEGER,

NOTE VARCHAR(200)

);

ALTER TABLE PAR_PROD1 ADD PRIMARY KEY (PROD, PAR);

ALTER TABLE PAR_PROD1 ADD FOREIGN KEY (PROD) REFERENCES PROD (ID_PROD);

ALTER TABLE PAR_PROD1 ADD FOREIGN KEY (PAR) REFERENCES PARAMETR1 (ID_PAR);

ALTER TABLE PAR_PROD1 ADD FOREIGN KEY (ENUM_VAL) REFERENCES POS_ENUM (ID_POS);

/*****************************************************************/

/*****************************************************************/

/* Объявление генератора для генерации значения идентификатора*/

CREATE GENERATOR PAR_GEN;

/* Создание процедуры для вызова генератора*/

create procedure GEN_ID_PAR

returns (

ONEW integer)

as

begin

/*функция: возвращает новый уникальный идентификатор oNew*/

oNew=GEN_ID(PAR_GEN,1); /*вызов генератора*/

suspend;

end

/* Пример вызова генератора

select oNew from GEN_ID_PAR

into :vId; */

Соседние файлы в папке преподское