Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МиСПрИС_Задание2_3_Петрова_Романова_Заболотников_9373

.pdf
Скачиваний:
24
Добавлен:
20.06.2023
Размер:
1.3 Mб
Скачать

Тестирование:

На рис. 5 – 19 приведены скриншоты тестов работы программы.

Рисунок 5 – Добавление нового продукта

Рисунок 6 – Связь между классами и параметрами

Рисунок 7 – Автоматическое добавление списков параметров по классу

Рисунок 8 – Добавление типовых параметров

11

Рисунок 9 – Заполнение параметров значениями

Рисунок 10 – Создание копии типового продукта

Рисунок 11 – Проверка создания копии типового продукта

Рисунок 12 – После заполнения только типовых параметров

12

Рисунок 13 – Значения типовых параметров типового изделия

Рисунок 14 – Значения типовых параметров для вариации изделия

Рисунок 15 – Все параметры для типового изделия

Рисунок 16 – Все параметры для вариации

13

Рисунок 17 – Формирование нового заказа

Рисунок 18 – Добавление позиций в заказ

Рисунок 19 – Вывод всех позиций заказа

14

Выводы.

В ходе данной работы была разработана объектная модель для решения задач управления заказами на изделия с вариантами исполнения. Также была разработана модель данных для реализации представленной объектной модели и придуманы SQL-процедуры для работы с заказами на изделия с вариантами исполнения. Выполнено тестирование фрагментов реализации каркаса, результаты которого подтвердили работоспособность представленных проектных решений.

15

ПРИЛОЖЕНИЕ А

----------------------------------------------------------------------

Сопровождающие процедуры и дополнения к таблицам

----------------------------------------------------------------------

> Зайка:

--Удаление варианта из Вариантов Конфигураторов

CREATE OR REPLACE function delete_VarConf (

VarIdToDelete integer) RETURNS VOID

as $$ begin

if(select count(*) from VarConf where VarIdToDelete = id_variation)

is not null then

DELETE FROM VarConf WHERE id_variation = VarIdToDelete;

else

raise exception 'VarConf with this id does not exist. DB wasnt updated.';

end if;

end $$ LANGUAGE plpgsql;

> Зайка:

-- Добавление элементов в таблицу VarConf

CREATE OR REPLACE function add_VarConf ( nameOfVarConf text) RETURNS VOID

as $$

declare flag int default 0; begin

select id_variation from VarConf where name_variation = nameOfVarConf into flag;

if flag is not null then

raise exception 'VarConf with this names already exists'; else

INSERT INTO VarConf(name_variation) VALUES ($1); end if;

end $$ LANGUAGE plpgsql;

CREATE TABLE Type_Param--Таблица Типов Параметров

(

id_paramType serial NOT NULL PRIMARY KEY, --Идентификатор Типа Параметра

16

name_paramType text NOT NULL --Наименование Типа Параметра

)

-- Перечисление таблица

CREATE TABLE enumeration

(

id_enum serial NOT null PRIMARY KEY, -- ID перечисления name_enum text NOT NULL --Имя перечисления

)

-- Значение перечисления строковое таблица

CREATE TABLE enum_value

(

id_value serial NOT null PRIMARY KEY, -- ID значения

num integer NOT NULL, -- Порядковый номмер значения в перечислении name_value text NOT NULL, --Имя значения

id_enum integer NOT NULL, --ID перечисления

CONSTRAINT id_enum FOREIGN KEY (id_enum)

REFERENCES enumeration(id_enum) MATCH simple -- Ограничение для ссылки только на существующее id

ON UPDATE cascade --На обновление таблицы перечисления нет

реакции

ON DELETE cascade -- Если удаляется объект перечисления, то удалятся и все значения, которые на него ссылались

)

create unique index union_num_iden on enum_value(num, id_enum); --

Создадим индекс для уникальности пар (num, id_enum)

create unique index union_name_iden on enum_value(name_value, id_enum); --Создадим индекс для уникальности пар (name_value, id_enum)

CREATE TABLE Parameters--Таблица Параметров

(

id_param serial NOT NULL PRIMARY KEY, --Идентификатор Класса name_param text NOT NULL, --Наименование параметров

flagConf bool not null, --Флаг конфигурации

id_paramType integer not null, --Ссылка на тип парраметра id_enum integer, -- Cссылка на перечисление

17

id_uom integer not null, -- Ссылка на ЕИ

CONSTRAINT id_uom FOREIGN KEY (id_uom)

REFERENCES Unit_Of_Measure (id_uom) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE CASCADE

)

alter table parameters drop column flagConf;

alter table parameters alter column id_uom drop not null;

ALTER TABLE Parameters ADD CONSTRAINT idParaType FOREIGN KEY (id_paramType)

REFERENCES public.Type_Param (id_paramType) MATCH SIMPLE ON UPDATE NO ACTION

ON DELETE cascade;

ALTER TABLE Parameters ADD CONSTRAINT id_enum FOREIGN KEY (id_enum) REFERENCES public.enumeration (id_enum) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE cascade;

CREATE TABLE Prod_Param--Таблица Параметров

(

id_pair serial NOT NULL PRIMARY KEY, --Идентификатор пары (Продут и Параметр)

id_prod integer NOT null, -- Ссылка на продукт id_param integer not null, -- Ссылка на параметр

id_enum_value integer, --ссылка на значение перечисления max_value integer not null,

min_value integer not null, value double precision,

CONSTRAINT id_enum_value FOREIGN KEY (id_enum_value) REFERENCES enum_value (id_value) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE CASCADE

)

ALTER TABLE Prod_Param ADD CONSTRAINT id_param FOREIGN KEY (id_param) REFERENCES public.Parameters (id_param) MATCH SIMPLE

18

ON UPDATE NO ACTION

ON DELETE cascade;

ALTER TABLE Prod_Param ADD CONSTRAINT id_prod FOREIGN KEY (id_prod) REFERENCES public.Product (id_product) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE cascade;

create unique index prodParamUnique on Prod_Param(id_prod, id_param); --Создадим индекс для уникальности пар (num, id_enum)

CREATE TABLE Class_Param--Таблица Параметров

(

id_pair serial NOT NULL PRIMARY KEY, --Идентификатор пары (Класс и Параметр)

id_class integer NOT null, -- Ссылка на Класс id_param integer not null, -- Ссылка на параметр max_value integer, --максимально допустимое значчение min_value integer, --минимально допустимое значчение

CONSTRAINT id_class FOREIGN KEY (id_class)

REFERENCES classificator (id_class) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE CASCADE

)

ALTER TABLE Class_Param ADD CONSTRAINT id_param FOREIGN KEY (id_param) REFERENCES public.Parameters (id_param) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE cascade;

create unique index classPar on Class_Param(id_class, id_param); --

Создадим индекс для уникальности пар (id_class, id_param)

CREATE TABLE SHD--Таблица Параметров

(

id_shd serial NOT NULL PRIMARY KEY, --Идентификатор СХД nameShd text NOT null -- Наименование СХД

)

19

CREATE TABLE ORDERR--Таблица Заказов

(

id_order serial NOT NULL PRIMARY KEY, -- ид Заказа id_shd integer NOT null, -- Ссылка на заказчика date_reg date not null, --Дата регистрации заказа

CONSTRAINT id_shd FOREIGN KEY (id_shd)

REFERENCES SHD (id_shd) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE CASCADE

)

CREATE TABLE Pos_Order--Таблица позиций в заказах

(

id_pair serial NOT NULL PRIMARY KEY, --Идентификатор пары (Заказ и Продукт)

id_order integer NOT null, -- Ссылка на Заказ id_prod integer not null, -- Ссылка на Продукт num integer not null, --Номер позиции

q integer not null, -- Колличество

CONSTRAINT id_order FOREIGN KEY (id_order)

REFERENCES ORDERR (id_order) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE CASCADE

)

ALTER TABLE Pos_Order ADD CONSTRAINT id_prod FOREIGN KEY (id_prod) REFERENCES public.Product (id_product) MATCH SIMPLE

ON UPDATE NO ACTION

ON DELETE cascade;

create unique index PosOrder on Pos_Order(id_order, num); --Создадим индекс для уникальности пар (id_order, num)

CREATE TABLE TypeProd_Param--Таблица позиций в заказах

(

id_pair serial NOT NULL PRIMARY KEY, --Идентификатор пары (Заказ и Продукт)

id_prod integer NOT null, -- Ссылка на Заказ id_param integer not null, -- Ссылка на Продукт

20