Добавил:
я зроблений з цукру Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗАДАНИЕ 1.3. Приемы моделирования Справочников / ЗАДАНИЕ 1.3. Приемы моделирования Справочников.docx
Скачиваний:
16
Добавлен:
31.05.2023
Размер:
558.32 Кб
Скачать

5.Тестирование

/****************Скрипты создания таблиц*********************/ /*********************Параметры-перечисления*************************/ CREATE TABLE ENUM( ID_ENUM SERIAL PRIMARY KEY, NAME VARCHAR(50) UNIQUE, SHORT_NAME VARCHAR(10) ); CREATE TABLE ENUM_VALUE( ID_VALUE SERIAL PRIMARY KEY, ID_ENUM INTEGER, VALUE INTEGER NOT NULL, NAME VARCHAR(50) NOT NULL, SHORT_NAME VARCHAR(10), FOREIGN KEY (ID_ENUM) REFERENCES ENUM(ID_ENUM) ON DELETE CASCADE ); /*********************Изделия и классы*************************/ CREATE TABLE EI ( SHORT_NAME varchar(10), NAME varchar(50) NOT NULL, CODE varchar(3) primary key ); create table PRODUCT_CLASS ( SHORT_NAME VARCHAR(10), ID_CLASS SERIAL PRIMARY KEY, NAME VARCHAR(50) unique, MAIN_CLASS INTEGER, BASE_EI VARCHAR(3), FOREIGN KEY (BASE_EI) REFERENCES EI (CODE), FOREIGN KEY (MAIN_CLASS) REFERENCES PRODUCT_CLASS (ID_CLASS) ); CREATE TABLE PRODUCT ( ID_PROD SERIAL PRIMARY KEY , SHORT_NAME VARCHAR(50), NAME VARCHAR(250) NOT NULL , ID_CLASS INTEGER, FOREIGN KEY (ID_CLASS) REFERENCES PRODUCT_CLASS (ID_CLASS) ); /*********************Параметры******************************/ CREATE TABLE PARAMETER ( ID_PAR SERIAL PRIMARY KEY , NAME VARCHAR(100) UNIQUE , SHORT_NAME VARCHAR(10), ENUM_TYPE BOOL NOT NULL, EI_CODE VARCHAR(3) NULL, ENUM_ID INTEGER NULL, FOREIGN KEY (EI_CODE) REFERENCES EI (CODE), FOREIGN KEY (ENUM_ID) REFERENCES ENUM (ID_ENUM) ); CREATE TABLE CLASS_PARAMETERS ( ID_CLASS INTEGER, ID_PARAMETER INTEGER, MIN_VALUE REAL NULL, MAX_VALUE REAL NULL, PRIMARY KEY (ID_CLASS, ID_PARAMETER), FOREIGN KEY (ID_CLASS) REFERENCES PRODUCT_CLASS (ID_CLASS), FOREIGN KEY (ID_PARAMETER) REFERENCES PARAMETER (ID_PAR) ); CREATE TABLE PRODUCT_PARAM ( PRODUCT_ID INTEGER, PARAM_ID INTEGER, VALUE REAL, ENUM_VALUE VARCHAR(30), PRIMARY KEY (PRODUCT_ID, PARAM_ID), FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCT (ID_PROD), FOREIGN KEY (PARAM_ID) REFERENCES PARAMETER (ID_PAR) );

/*********************** Заполнение таблиц ********************************/ /************************** Заполнение ЕИ ********************************/ select * from INS_EI('003','мм','Миллиметр'); select * from INS_EI('006','м','Метр'); select * from INS_EI('055','м2','Квадратный метр'); select * from INS_EI('166','кг','Килограмм'); select * from INS_EI('100','см3','Кубический сантиметр'); select * from INS_EI('001','см4','Сантиметр в 4 степени'); /************************** Классы изделий ********************************/ select * from ins_product_class (0, '','Изделия', null); /* 1 */ select * from ins_product_class (1, '','Прокатная сталь','166'); /* 2 */ select * from ins_product_class (2, '','Сталь горячекатанная','166'); /* 3 */ select * from ins_product_class (3, '','Балки двутавровые','166'); /* 4 */ select * from ins_product_class (4, '','Балки двутавровые ГОСТ 8239-72','166'); /* 5 */ select * from ins_product_class (4, '','Балки двутавровые ГОСТ 8239-89','166'); /* 6 */ select * from ins_product_class (3, '','Швеллеры','166'); /* 7 */ select * from ins_product_class (7, '','Швеллеры с уклоном внутренних полок ГОСТ 8240-72 ','166'); /* 8 */ select * from ins_product_class (3, '','Сталь прокатная угловая','166'); /* 9 */ /*********************** Заполнение таблицы продукции *******************/ select * from INS_PROD(5,'','ДВУТАВР 14-В СТ 3КП2-I'); select * from INS_PROD(5,'','ДВУТАВР 18-В СТ 3КП2-I'); select * from INS_PROD(8,'','ШВЕЛЛЕР 12-У СТ 3СП5'); select * from INS_PROD(8,'','ШВЕЛЛЕР 14 СТ 3СП5'); select * from INS_PROD(9,'','УГОЛОК 32Х32Х4 СТ 01'); select * from INS_PROD(9,'','УГОЛОК 40Х40Х4 СТ 01'); select * from INS_PROD(3,'','ТРУБА 13Х2 СТ 10'); select * from INS_PROD(3,'','ТРУБА 32Х3,2 СТ 10'); /*********************** Тесты параметров ********************************/ /***************************************************************************/ /*** Скрипты заполнения таблицы PARAMETR ***/ select * from INS_PARAM('Ширина профиля','b',FALSE,'003', null); select * from INS_PARAM('Толщина стенки профиля','s',FALSE,'003', null); select * from INS_PARAM('Высота профиля','h',FALSE,'006', null); select * from INS_PARAM('Диаметр трубы','D',FALSE,'006', null); select * from INS_PARAM('Площадь поперечного сечения','A',FALSE, '100', null); select * from INS_PARAM('Момент инерции сечения по оси y','Iy',FALSE,'001', null); select * from INS_PARAM('Момент инерции сечения по оси z','Iz',FALSE,'001', null); select * from INS_PARAM('Момент сопротивления относительно оси y','Wy',FALSE,'100', null); select * from INS_PARAM('Момент сопротивления относительно оси z','Wz',FALSE,'100', null); select * from INS_PARAM('Радиус инерции относительно оси y','iy',FALSE,'003', null); select * from INS_PARAM( 'Масса профиля','P',FALSE,'166', null); /**************************************************************************/ /**** Скрипты формирования параметров классов ***/ /*5 Площадь сечения, 3 Сталь холоднокатанная*/ select * from ins_class_param(3, 5,0.1, 100); /*12 Масса профиля, 3 Сталь холоднокатанная*/ select * from ins_class_param(3, 11,0.1, 100); /*6 Iy, 3 Сталь холоднокатанная*/ select * from ins_class_param(3, 6,0.1, 100); /*7 Iz, 3 Сталь холоднокатанная*/ select * from ins_class_param(3, 7,0.1, 100); /*8 Wy, 3 Сталь холоднокатанная*/ select * from ins_class_param(3, 8,0.1, 100); /*9 Wz, 3 Сталь холоднокатанная*/ select * from ins_class_param(3, 9,0.1, 100); /*10 iy, 3 Сталь холоднокатанная*/ select * from ins_class_param(3, 10,0.1, 100); /****************Скрипты формирования параметров продукции******************/ select * from ins_product_param(7, 11, 40, NULL); select * from ins_product_param(7, 10, 20, NULL); select * from ins_product_param(7, 6, 20, NULL); select * from ins_product_param(7, 44, 20, NULL);

Выведем параметры изделия «Труба 13х2 ст 10»:

SELECT * FROM get_product_param(7);

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

Пример вывода параметров заданного класса «Сталь горячекатанная»:

SELECT * FROM get_class_param(3);

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

Изменим значение параметра «Масса профиля» для изделия и выведем результат:

select * from change_product_param(11, 10, 33);

select * from get_product_param(7);

Рисунок 8 – Измененное значение параметра «Масса профиля»

17