
- •Задание на работу
- •1.1. Разработать проект каркаса для работы со спецификациями изделий
- •1.2. Содержание работы
- •1.3. Исходные данные для задачи
- •1.4. Рекомендуемые инструменты
- •1.5. Рекомендуемые источники
- •Аннотация
- •1. Анализ исходных данных
- •2. Разработка функциональных требований к подсистеме
- •3. Разработка проектной модели классов
- •4. Разработка модели хранения
- •5. Разработка процедур поддержки работы со спецификациями
- •6. Подготовка примера спецификации изделия
- •7. Тестирование процедур работы со спецификацией изделия
- •Список используемых источников
- •Приложение 1. Скрипты метаданных для задачи 6
6. Подготовка примера спецификации изделия
/************Подготовка данных для примера*********************/
/***************************************************************/
/********* Добавление изделий **************/
/*0 - «Изделие без конфигуратора»
2 1 - «Типовое изделие с конфигуратором»
3 2 - «Вариант исполнения»
*/
select * from INS_PROD2(15,'','ЛИСТ 14-Б-ПН-ОСТ 3СП',0,0);
/*id = 54*/
select * from INS_PROD2(15,'','ЛИСТ 10-Б-ПН-ОСТ 3СП',0,0);
/*id = 55*/
/***************************************************************/
/************* Создание перечислений *********************/
select * from INS_ENUN('Кпр','КОЛ. ПРОУШИН') /*3*/
select * from INS_ENUN('Кр','КОЛ. РАСПОРОК') /*4*/
select * from INS_VAL_ENUM(3,'','',0); /*16*/
select * from INS_VAL_ENUM(3,'1','1',1); /*17*/
select * from INS_VAL_ENUM(3,'2','2',2); /*18*/
select * from INS_VAL_ENUM(4,'','',0); /*19*/
select * from INS_VAL_ENUM(4,'','',2); /*20*/
select * from INS_VAL_ENUM(4,'','',4); /*21*/
/***************** Создание параметров *************/
select * from INS_PARAMETR('К_ПРшт','КОЛ.ПРОУШИН ',9,2,3);/*19*/
select * from INS_PARAMETR('К_Ршт','КОЛ. РАСПОРОК',9,2,4); *20*/
/***************************************************************/
/********** Добавление параметров для типового изделия **/
insert into PAR_TYPE_PROD(ID_PROD,ID_PAR,MIN_VAL,MAX_VAL)
values(52,19,0,2);
insert into PAR_TYPE_PROD(ID_PROD,ID_PAR,MIN_VAL,MAX_VAL)
values(52,20,0,4);
/***************************************************************/
/********* Созданиепредикатов **********************/
/* NEW_PRED(pIdPar integer,pOper char(1),pVal integer)*/
/***
1. (Кпр=0 and Кр=0) or (Кпр=0 and Кр=2) or (Кпр=1 and Кр=0) дляматериала M3
2. (Кпр=1 and Кр=2) or (Кпр=2 and Кр=2) для материала M2
3. (Кпр=2 and Кр=4) для материала M1
4. (Кпр=1 and Кр=0) or (Кпр=1 and Кр=2) для строки с количеством проушин 1
5. (Кпр=2 and Кр=2) or (Кпр=1 and Кр=4) для строки с количеством проушин 2
6. Кр=2 для строки с количеством распорок 2
7. (Кпр=2 and Кр=4) для строки с количеством распорок 4
Недопустимые варианты задаются функцией:
(Кпр=0 and Кр=4) or (Кпр=1 and Кр=4) or ( Кпр=2 and Кр=0)
*/
select * from NEW_PRED(19,'=',16) /*1 Кпр=0 */
select * from NEW_PRED(20,'=',19) /*2 Кр=0 */
select * from NEW_PRED(20,'=',20) /*3 Кр=2 */
select * from NEW_PRED(19,'=',17) /*4 Кпр=1 */
select * from NEW_PRED(19,'=',18) /*5 Кпр=2 */
select * from NEW_PRED(20,'=',21) /*6 Кр=4 */
/***************************************************************/
/********* Созданиефункций **********************/
/* procedure NEW_F(pShName varchar(15),pName varchar(50))
returns(oIdF integer,oRes integer)
*/
select * from NEW_F('1','1') /*9*/
select * from NEW_F('2','2') /*10*/
select * from NEW_F('3','3') /*11*/
select * from NEW_F('4','4') /*12*/
select * from NEW_F('5','5') /*13*/
select * from NEW_F('6','6') /*14*/
select * from NEW_F('7','7') /*15*/
select * from NEW_F('ER','ER') /*16*/
/********* Созданиетелафункций **********************/
/* procedure ADD_PRED(pIdF integer,pNumD integer, pIdPred integer)
returns(oNumK integer,oRes integer)
*/
/*1. (Кпр=0 and Кр=0) or (Кпр=0 and Кр=2) or (Кпр=1 and Кр=0) дляматериала M3*/
select * from ADD_PRED(9,1,1);
select * from ADD_PRED(9,1,2);
select * from ADD_PRED(9,2,1);
select * from ADD_PRED(9,2,3);
select * from ADD_PRED(9,3,4);
select * from ADD_PRED(9,3,2);
/*2. (Кпр=1 and Кр=2) or (Кпр=2 and Кр=2) для материала M2*/
select * from ADD_PRED(10,1,4);
select * from ADD_PRED(10,1,3);
select * from ADD_PRED(10,2,5);
select * from ADD_PRED(10,2,2);
/*3. (Кпр=2 and Кр=4) для материала M1 */
select * from ADD_PRED(11,1,5);
select * from ADD_PRED(11,1,6);
/*4. (Кпр=1 and Кр=0) or (Кпр=1 and Кр=2) для строки с количеством проушин 1 */
select * from ADD_PRED(12,1,4);
select * from ADD_PRED(12,1,2);
select * from ADD_PRED(12,2,4);
select * from ADD_PRED(12,2,3);
/*5. (Кпр=2 and Кр=2) or (Кпр=1 and Кр=4) для строки с количеством проушин 2 */
select * from ADD_PRED(13,1,5);
select * from ADD_PRED(13,1,2);
select * from ADD_PRED(13,2,4);
select * from ADD_PRED(13,2,6);
/*6. Кр=2 для строки с количеством распорок 2 */
select * from ADD_PRED(14,1,3);
/*7. (Кпр=2 and Кр=4) для строки с количеством распорок 4 */
select * from ADD_PRED(15,1,5);
select * from ADD_PRED(15,1,6);
/*Недопустимые варианты задаются функцией:
(Кпр=0 and Кр=4) or (Кпр=1 and Кр=4) or ( Кпр=2 and Кр=0) */
select * from ADD_PRED(16,1,1);
select * from ADD_PRED(16,1,6);
select * from ADD_PRED(16,2,4);
select * from ADD_PRED(16,2,6);
select * from ADD_PRED(16,3,5);
select * from ADD_PRED(16,3,2);
/***************************************************************/
/********* Изменение спецификации **********************/
/*Выбираем типовое изделие 52 КП25.00.00.450 КОРПУС*/
select * from INS_POS(52,45, 2); /* количествопроушин 2*/
select * from INS_POS(52,35, 4); /* количествораспорок 4*/
select * from INS_POS(36,54, 0.004); /*заменаматериаластенок */
select * from INS_POS(36,55, 0.003);
select * from INS_POS(34,54, 0.012);
select * from INS_POS(36,55, 0.01);
/***************************************************************/
/**************** Создание нового варианта продукции *******/
/*Используем procedureNEW_VAR_PROD ( pTypeProdinteger)
returns (
OIDPROD integer,oName varchar(250), oShName varchar(50),
ORES integer)
ID_PROD SHORT_NAME NAME CONF ID_CL TYPE_PROD FLAG U PRICE
52 КП25.00.00.450 КОРПУС 1 24 0 */
select * from NEW_VAR_PROD ( 52) /*56*/
/* Новый вариант исполнения
ID_PROD SHORT_NAME NAME CONF ID_CL TYPE_PROD FLAG U PRICE
56 КП25.00.00.450 КОРПУС 2 24 52 */
/***************************************************************/
/*Заносим значения параметров конфигурации для варианта исполнения используя
WRITE_PAR3 (
PIDPROD integer,
PIDPAR integer,
pIdVal integer,
PVAL double precision)
*/
select * from WRITE_PAR3 (56,19,16,0); /*OK*/
select * from WRITE_PAR3 (56,20,19,0); /*OK*/