Построение ленточного графика выполнения работы
Одной из основных целей планирования проведения работы является определение их общей продолжительности. Наиболее удобным, простым и наглядным является ленточный график проведения работ. Продолжительность каждой работы Tn определяется по формуле: где Ti - трудоемкость работ (чел./дн.) Ci - численность исполнителей (чел.)
Таб.4.3. Ленточный график выполнения работ.
3.4 Определение плановой себестоимости НИР
Целью расчета себестоимости НИР является экономически обоснованной определение величины затрат на её выполнение. В плановую себестоимость включают все затраты, связанные с выполнением работы, независимо от источника финансирования. Определение затрат производится путем составления затрат на НИР.
Смета затрат на НИР должна быть представлена по следующим статьям калькуляции:
1. Материалы, покупные изделия и полуфабрикаты; 2. Спецоборудование для научных исследований; 3. Расходы на силовую электроэнергию. 4. Основная заработная плата производственного персонала; 5. Отчисления на социальное страхование; 6. Косвенные (накладные) расходы отдела(кафедры); 7. Производственные командировки; 8. Контрагентные работы, которые включают стоимость работ, выполняемых для темы другими организациями. 9. Оплата услуг опытного производства, находящегося на самостоятельном балансе; 10. Общеуниверситетские косвенные расходы; 11. Расходы на научно-техническую информацию; 12. Расходы на зарубежные лицензии и патенты; 13. Отчисления в пенсионный фонд; 14. Отчисления в фонд занятости; 15. Отчисления на медицинское страхование; 16. Затраты на эксплуатацию оборудования (амортизацию).
1. Расчет стоимости покупных изделий представлен в таблице.
Таб.4.3. Стоимость покупных изделий.
2. Спецоборудование для работ не применялось, расходы отсутствуют. 3. Работы с использованием силовой электроэнергии не проводились, расходы отсутствуют. 4. В качестве базы для расчета заработной платы принимается месячный оклад кандидата наук в размере 345000 руб. (13 разряд), что составляет в пересчете на 1 учебный час работы при 800-часовой годовой нагрузке: (345000 * 12) / 800 = 5175 (руб./час) Руководство дипломным проектированием оценивается преподавателем в 6 учебных часов. Таким образом, получим основную заработную плату производственного персонала в размере:
5175 * 26 = 134550 (руб.) 5. Отчисление на социальное страхование. По условию договора составляют 5,4% от заработной платы (п.4). Сумма расходов по статье 7265 руб. 6. Косвенные (накладные) расходы кафедры условиями договора не предусмотрены. 7. Производственные командировки условиями договора не предусмотрены. 8. Контрагентные работы не проводились, расходы отсутствуют. 9. Оплата услуг опытного производства, находящегося на самостоятельном балансе не проводилась. 10. Общевузовские расходы. По условиям договора берутся 15% от заработной платы (от п.4) и составляют 20183 руб. 11. Расходы на научно-техническую информацию отсутствуют. 12. Расходы на зарубежные лицензии и патенты отсутствуют. 13. Отчисления в пенсионный фонд. Данные расходы берутся в размере 1% от основной заработной платы производственного персонала (п.4) и составляют 1345 руб. 14. Отчисления в фонд занятости. Расходы по данной статье 2% от основной заработной платы производственного персонала (п.4) или 2691 руб. 15. Отчисления на медицинское страхование. На эти нужды отчисляется 3,6% от основной заработной платы производственного персонала (п.4) или 4844 руб. 16. Затраты на эксплуатацию оборудования (амортизацию). В процессе работы над проектом использовались персональный компьютер IBM PC Pentium 133 и принтер. Отчисления на амортизацию данной техники составляют 3200 руб. за 1 час работы и составляют при 300-часовой эксплуатации компьютера и 5-часовой принтера 3200 * (300 + 5) = 976000 руб.
Результаты калькуляции по статьям сведены в таблицу
Таб.4.4. Калькуляция по статьям расходов.
Заключение
За время работы над дипломным проектом по теме «Организация удаленного доступа к распределенным базам данных» были изучены теоретические основы построения распределенных информационных систем с возможностью оперативного удаленного доступа к данным. Результатом дипломного проектирования является информационная система для автоматизации расчетов с абонентами АО «Связьинформ» РМ. В ходе работы было проведено информационное моделирование объекта, построена структура баз данных, отвечающая предъявляемым требованиям, а также разработана архитектура информационной системы. Кроме того, было разработано программное обеспечение для автоматизации администрирования и решения задач удаленного доступа, удаленного управления и репликации данных. Отдельная глава посвящена технико-экономическому обоснованию данного дипломного проекта.
Список литературы
1. Borland InterBase Workgroup Server. API Guide. - Borland International Inc, 1995 - 330 c. 2. Borland InterBase Workgroup Server. DataDefinition Guide. - Borland International Inc, 1995 - 212 c. 3. Borland InterBase Workgroup Server. Language Reference. - Borland International Inc, 1995 - 234 c. 4. Borland InterBase Workgroup Server. Programmer’s Guide. - Borland International Inc, 1995 - 340 c. 5. Microsoft Online Documentation: Win32 Programmers Reference. 6. R.Barker "CASE* Method - Entity Relationship Modelling". - Oracle Inc., 1990 - 243 c. 7. Биллиг В.А., Мусикаев И.Х. «Visual C++ 4. Книга для программистов». - М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1996. - 352 с. ил. 8. Галатенко В. «Информационная безопасность - обзор основных положений: Ч1»: - Информационный бюллетень Jet Info №1/1996. 9. Галатенко В. «Информационная безопасность - обзор основных положений: Ч2»: - Информационный бюллетень Jet Info №2/1996. 10. Галатенко В. «Информационная безопасность - обзор основных положений: Ч3»: - Информационный бюллетень Jet Info №3/1996. 11. Грабер Мартин. “Введение в SQL”. Пер. с англ. - М.: Издательство “ЛОРИ”, 1996. - 375 с., ил. 12. Зубанов Ф. «Windows NT - выбор «профи»». - М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1996. - 392 с. ил. 13. Кастер Х. «Основы Windows NT и NTFS». Пер. с англ. - М: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1996. - 440 с. ил.
14. Ладыженский Глеб. «СУБД - коротко о главном»: - Информационный бюллетень Jet Info №3-5/1995. 15. Ларин Л.С., Челдаева Л.А., Гуськова Н.Д."Технико-экономическое обоснование дипломных проектов", Саранск, 1983, 100 с. 16. «Решения Microsoft» - Вып. 4. - М: АООТ «Типография Новости», 1996. 124 с., ил. 17. «Решения Microsoft» - Вып. 5. - М: АООТ «Типография Новости», 1997. 132 с., ил. 18. Рихтер Дж.. «Windows для профессионалов (Программирование в Win32 API для Windows 95 и Windows NT)». Пер. с англ. - М: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1995. - 720 с. ил. 19. Паппас К., Мюррей У.. «Visual C++. Руководство для профессионалов»: пер. с англ. - Спб.: BHV - Санкт-Петербург, 1996. - 912 с., ил. 20. «Сетевые средства Windows NT»: Пер. с англ. - СПб.: BHV - Санкт-Петербург, 1996 - 496 с., ил. 21. Фролов А.В., Фролов Г.В. «Microsoft Visual C++ и MFC». - М: Диалог-МИФИ, 1996 - 288 с., ил. 22. Фролов А.В., Фролов Г.В. «Программирование для Windows NT: Ч2». - М: Диалог-МИФИ, 1997 - 271 с., ил. 23. Янг М. «Mastering Microsoft Visual C++». Пер. с англ.- К.: ВЕК+, М.: ЭНТРОП, 1997. - 704 с., ил.
Приложение 1
SQL-скрипт для генерации базы данных
CREATE GENERATOR genUslPropsKeys;
CREATE GENERATOR genUslProps;
CREATE GENERATOR genPhonesRegions;
CREATE GENERATOR genPhonesStations;
CREATE GENERATOR genPhonesStreets;
CREATE GENERATOR genPhonesBanks;
CREATE GENERATOR genTalksPay;
CREATE GENERATOR genTalks;
CREATE GENERATOR genNach;
CREATE GENERATOR genNachBillings;
CREATE GENERATOR genNachBillDates;
CREATE GENERATOR genNachConstUsl;
CREATE GENERATOR genUslDivisions;
CREATE GENERATOR genUslLgots;
CREATE GENERATOR genUslsKeys;
CREATE GENERATOR genUsls;
CREATE GENERATOR genUslCatKeys;
CREATE GENERATOR genUslCat;
CREATE GENERATOR genPhones;
CREATE GENERATOR genPhonesOwnersKeys;
CREATE GENERATOR genPhonesOwners;
CREATE GENERATOR genSysSettings;
CREATE GENERATOR genPhonesKeys;
CREATE GENERATOR genPlat;
CREATE GENERATOR genPhonesPostStations;
CREATE GENERATOR genSysLog;
CREATE GENERATOR genUslTypes;
CREATE GENERATOR genUslDivisionsKeys;
CREATE DOMAIN CALLTIME_TYPE INTEGER NOT NULL;
CREATE DOMAIN CURR_TYPE FLOAT DEFAULT 0 NOT NULL;
CREATE DOMAIN DATE_TYPE DATE NOT NULL;
CREATE DOMAIN DESCR_TYPE CHAR(32);
CREATE DOMAIN PHONE_TYPE CHAR(7) NOT NULL;
CREATE DOMAIN PROCENT_TYPE FLOAT DEFAULT 100 NOT NULL CHECK (VALUE BETWEEN 0 AND 300);
CREATE TABLE Nach ( Code INTEGER NOT NULL, Owner INTEGER NOT NULL, Usl INTEGER NOT NULL, Phone INTEGER, UslSum CURR_TYPE, NachDate DATE_TYPE, BillDate DATE_TYPE );
ALTER TABLE Nach ADD CONSTRAINT XPKNach PRIMARY KEY (Code);
CREATE TABLE NachBillDates ( Code INTEGER NOT NULL, BillingDate INTEGER NOT NULL );
ALTER TABLE NachBillDates ADD CONSTRAINT XPKBillDates PRIMARY KEY (Code);
CREATE TABLE NachBillings ( Code INTEGER NOT NULL, Division INTEGER NOT NULL, Owner INTEGER NOT NULL, BillDateCode INTEGER NOT NULL );
ALTER TABLE NachBillings ADD CONSTRAINT XPKNachBillings PRIMARY KEY (Code);
CREATE TABLE NachConstUsl ( Code INTEGER NOT NULL,
Owner INTEGER NOT NULL, Usl INTEGER NOT NULL, Phone INTEGER NOT NULL, UslSum CURR_TYPE, BegDate DATE_TYPE, EndDate DATE_TYPE );
ALTER TABLE NachConstUsl ADD CONSTRAINT XPKNachConstUsl PRIMARY KEY (Code);
CREATE TABLE Phones ( Code INTEGER NOT NULL, Street INTEGER NOT NULL, Owner INTEGER NOT NULL, PKey INTEGER NOT NULL, Comment DESCR_TYPE, PhoneNmb PHONE_TYPE, InstallDate DATE_TYPE, RemoveDate DATE_TYPE, BegDate DATE_TYPE, EndDate DATE_TYPE );
ALTER TABLE Phones ADD CONSTRAINT XPKPhones PRIMARY KEY (Code);
CREATE TRIGGER Phones_BUH FOR Phones BEFORE UPDATE POSITION 0 AS BEGIN
/* Изменение BegDate */ IF (new.BegDate <> old.BegDate) THEN BEGIN IF (new.BegDate < old.BegDate) THEN BEGIN /* Расширение BegDate */ UPDATE Phones SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение BegDate */ UPDATE Phones SET EndDate = new.BegDate WHERE ((EndDate = old.BegDate) AND (PKey = new.PKey));
END END
/* Изменение EndDate */ IF (new.EndDate <> old.EndDate) THEN BEGIN IF (new.EndDate > old.EndDate) THEN BEGIN /* Расширение EndDate */ UPDATE Phones SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение EndDate */ UPDATE Phones SET BegDate = new.EndDate WHERE ((BegDate = old.EndDate) AND (PKey = new.PKey));
END END
/* Сборка мусора */ DELETE FROM Phones WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code));
END ^
CREATE TRIGGER Phones_BIH FOR Phones BEFORE INSERT POSITION 0 AS BEGIN
DELETE FROM Phones WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey));
UPDATE Phones SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
UPDATE Phones SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ^
CREATE TRIGGER Phones_BDH FOR Phones BEFORE DELETE POSITION 0 AS BEGIN
UPDATE Phones SET EndDate = old.EndDate WHERE ((EndDate = old.BegDate) AND (PKey = old.PKey));
END ^
CREATE TABLE PhonesBanks ( Code INTEGER NOT NULL, Name1 DESCR_TYPE, PMFO CHAR(12) NOT NULL, Name2 DESCR_TYPE, ELMFO CHAR(12) NOT NULL, PlatCount SMALLINT NOT NULL, Acc1 CHAR(12) NOT NULL, Acc2 CHAR(12) NOT NULL );
CREATE INDEX XIEPhonesBanksName ON PhonesBanks ( Name1, Name2 );
ALTER TABLE PhonesBanks ADD CONSTRAINT XPKPhonesBanks PRIMARY KEY (Code);
CREATE TABLE PhonesKeys ( Code INTEGER NOT NULL );
ALTER TABLE PhonesKeys ADD CONSTRAINT XPKPhonesKeys PRIMARY KEY (Code);
CREATE TABLE PhonesOwners ( Code INTEGER NOT NULL, PKey INTEGER NOT NULL, Name1 DESCR_TYPE, Name2 DESCR_TYPE, Category INTEGER NOT NULL, Bank INTEGER, Street INTEGER NOT NULL, PostStation INTEGER, House CHAR(5), Corpus CHAR(3), Flat CHAR(3), Account CHAR(5), RS CHAR(9), INN CHAR(13), Nmb_Dogov CHAR(6), Date_Dogov DATE, BegDate DATE_TYPE, EndDate DATE_TYPE );
ALTER TABLE PhonesOwners ADD CONSTRAINT XPKPhonesOwners PRIMARY KEY (Code);
CREATE TRIGGER PhonesOwners_BUH FOR PhonesOwners BEFORE UPDATE POSITION 0 AS BEGIN
/* Изменение BegDate */ IF (new.BegDate <> old.BegDate) THEN BEGIN IF (new.BegDate < old.BegDate) THEN BEGIN /* Расширение BegDate */ UPDATE PhonesOwners SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение BegDate */ UPDATE PhonesOwners SET EndDate = new.BegDate WHERE ((EndDate = old.BegDate) AND (PKey = new.PKey));
END END
/* Изменение EndDate */ IF (new.EndDate <> old.EndDate) THEN BEGIN IF (new.EndDate > old.EndDate) THEN BEGIN /* Расширение EndDate */ UPDATE PhonesOwners SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение EndDate */ UPDATE PhonesOwners SET BegDate = new.EndDate WHERE ((BegDate = old.EndDate) AND (PKey = new.PKey));
END END
/* Сборка мусора */ DELETE FROM PhonesOwners WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code));
END ^
CREATE TRIGGER PhonesOwners_BIH FOR PhonesOwners BEFORE INSERT POSITION 0 AS BEGIN
DELETE FROM PhonesOwners WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey));
UPDATE PhonesOwners SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
UPDATE PhonesOwners SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ^
CREATE TRIGGER PhonesOwners_BDH FOR PhonesOwners BEFORE DELETE POSITION 0 AS BEGIN
UPDATE PhonesOwners SET EndDate = old.EndDate WHERE ((EndDate = old.BegDate) AND (PKey = old.PKey));
END ^
CREATE TABLE PhonesOwnersKeys ( Code INTEGER NOT NULL, InRest CURR_TYPE, OutRest CURR_TYPE, NDolg INTEGER NOT NULL );
ALTER TABLE PhonesOwnersKeys ADD CONSTRAINT XPKPhonesOwnersKeys PRIMARY KEY (Code);
CREATE TABLE PhonesPostStations ( Code INTEGER NOT NULL, Name DESCR_TYPE, Region INTEGER NOT NULL, PostIndex CHAR(6) NOT NULL, PostNmb CHAR(6) NOT NULL );
CREATE UNIQUE INDEX XAKPhonesPostStationsIndex ON PhonesPostStations ( PostIndex );
CREATE UNIQUE INDEX XAKPhonesPostStationsPostNmb ON PhonesPostStations ( PostNmb );
CREATE INDEX XIEPhonesPostStationsName ON PhonesPostStations ( Name );
ALTER TABLE PhonesPostStations ADD CONSTRAINT XPKPhonesPostStations PRIMARY KEY (Code);
CREATE TABLE PhonesRegions ( Code INTEGER NOT NULL, Name DESCR_TYPE NOT NULL );
CREATE INDEX XIEPhonesRegionsName ON PhonesRegions ( Name );
ALTER TABLE PhonesRegions ADD CONSTRAINT XPKPhonesRegions PRIMARY KEY (Code);
CREATE TABLE PhonesStations ( Code INTEGER NOT NULL, Region INTEGER NOT NULL, Name DESCR_TYPE NOT NULL );
CREATE INDEX XIEPhonesStationsName ON PhonesStations ( Name );
ALTER TABLE PhonesStations ADD CONSTRAINT XPKPhonesStations PRIMARY KEY (Code);
CREATE TABLE PhonesStreets ( Code INTEGER NOT NULL, Station INTEGER NOT NULL, Region INTEGER NOT NULL, Name DESCR_TYPE );
CREATE INDEX XIEPhonesStreetsName ON PhonesStreets ( Name );
ALTER TABLE PhonesStreets ADD CONSTRAINT XPKPhonesStreets PRIMARY KEY (Code);
CREATE TABLE Plat ( Code INTEGER NOT NULL, Owner INTEGER NOT NULL, ToUsl INTEGER, PlatDate DATE_TYPE, PlatType INTEGER NOT NULL, DocNmb CHAR(12) NOT NULL );
ALTER TABLE Plat ADD CONSTRAINT XPKPlat PRIMARY KEY (Code);
CREATE TABLE SysLog ( Code INTEGER NOT NULL, TableName CHAR(16) NOT NULL, OpType INTEGER NOT NULL, NewData CHAR(64) NOT NULL, OpDate DATE NOT NULL );
ALTER TABLE SysLog ADD CONSTRAINT XPKSysLog PRIMARY KEY (Code);
CREATE TABLE SysSettings ( Code INTEGER NOT NULL, TimeTalksUsl INTEGER NOT NULL, NullOwner INTEGER NOT NULL );
ALTER TABLE SysSettings ADD CONSTRAINT XPKSysSettings PRIMARY KEY (Code);
CREATE TABLE Talks ( Code INTEGER NOT NULL, DayCode INTEGER NOT NULL, Phone INTEGER NOT NULL, ToPhone INTEGER NOT NULL, CallTime CALLTIME_TYPE, PhoneNmb PHONE_TYPE, HowLong INTEGER NOT NULL, ToPhoneNmb PHONE_TYPE, Calculated SMALLINT NOT NULL, CallDate DATE_TYPE );
CREATE INDEX XAK1TalksCallDate ON Talks ( CallDate );
ALTER TABLE Talks ADD CONSTRAINT XPKTalks PRIMARY KEY (Code);
CREATE TABLE TalksPay ( Code INTEGER NOT NULL, Phone INTEGER NOT NULL, TotalSum CURR_TYPE, TotalLgotTime CALLTIME_TYPE, TotalFullTime CALLTIME_TYPE, TotalTime COMPUTED BY (TotalLgotTime+TotalFullTime), CallDate DATE_TYPE );
ALTER TABLE TalksPay ADD CONSTRAINT XPKTalksPay PRIMARY KEY (Code);
CREATE TABLE UslCat ( Code INTEGER NOT NULL, PKey INTEGER NOT NULL, Name DESCR_TYPE, Parent INTEGER NOT NULL, BegDate DATE_TYPE, EndDate DATE_TYPE );
CREATE INDEX XIEUslCatName ON UslCat ( Name );
CREATE INDEX XIEUslCatParent ON UslCat ( Parent );
ALTER TABLE UslCat ADD CONSTRAINT XPKUslCat PRIMARY KEY (Code);
CREATE TRIGGER UslCat_BUH FOR UslCat BEFORE UPDATE POSITION 0 AS BEGIN
/* Изменение BegDate */ IF (new.BegDate <> old.BegDate) THEN BEGIN IF (new.BegDate < old.BegDate) THEN BEGIN /* Расширение BegDate */ UPDATE UslCat SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение BegDate */ UPDATE UslCat SET EndDate = new.BegDate WHERE ((EndDate = old.BegDate) AND (PKey = new.PKey));
END END
/* Изменение EndDate */ IF (new.EndDate <> old.EndDate) THEN BEGIN IF (new.EndDate > old.EndDate) THEN BEGIN /* Расширение EndDate */ UPDATE UslCat SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение EndDate */ UPDATE UslCat SET BegDate = new.EndDate WHERE ((BegDate = old.EndDate) AND (PKey = new.PKey));
END END
/* Сборка мусора */ DELETE FROM UslCat WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code));
END ^
CREATE TRIGGER UslCat_BIH FOR UslCat BEFORE INSERT POSITION 0 AS BEGIN
DELETE FROM UslCat WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey));
UPDATE UslCat SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
UPDATE UslCat SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ^
CREATE TRIGGER UslCat_BDH FOR UslCat BEFORE DELETE POSITION 0 AS BEGIN
UPDATE UslCat SET EndDate = old.EndDate WHERE ((EndDate = old.BegDate) AND (PKey = old.PKey));
END ^
CREATE TABLE UslCatKeys ( Code INTEGER NOT NULL );
ALTER TABLE UslCatKeys ADD CONSTRAINT XPKUslCatKeys PRIMARY KEY (Code);
CREATE TABLE UslDivisions ( Code INTEGER NOT NULL, Name DESCR_TYPE, PKey INTEGER NOT NULL, Parent INTEGER NOT NULL, BegDate DATE_TYPE, EndDate DATE_TYPE );
CREATE INDEX XIEUslDivisionsname ON UslDivisions ( Name );
CREATE INDEX XIEUslDivisionsParent ON UslDivisions ( Parent );
ALTER TABLE UslDivisions ADD CONSTRAINT XPKUslDivisions PRIMARY KEY (Code);
CREATE TRIGGER UslDivisions_BUH FOR UslDivisions BEFORE UPDATE POSITION 0 AS BEGIN
/* Изменение BegDate */ IF (new.BegDate <> old.BegDate) THEN BEGIN IF (new.BegDate < old.BegDate) THEN BEGIN /* Расширение BegDate */ UPDATE UslDivisions SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение BegDate */ UPDATE UslDivisions SET EndDate = new.BegDate WHERE ((EndDate = old.BegDate) AND (PKey = new.PKey));
END END
/* Изменение EndDate */ IF (new.EndDate <> old.EndDate) THEN BEGIN IF (new.EndDate > old.EndDate) THEN BEGIN /* Расширение EndDate */ UPDATE UslDivisions SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение EndDate */ UPDATE UslDivisions SET BegDate = new.EndDate WHERE ((BegDate = old.EndDate) AND (PKey = new.PKey));
END END
/* Сборка мусора */ DELETE FROM UslDivisions WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code));
END ^
CREATE TRIGGER UslDivisions_BIH FOR UslDivisions BEFORE INSERT POSITION 0 AS BEGIN
DELETE FROM UslDivisions WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey));
UPDATE UslDivisions SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
UPDATE UslDivisions SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ^
CREATE TRIGGER UslDivisions_BDH FOR UslDivisions BEFORE DELETE POSITION 0 AS BEGIN
UPDATE UslDivisions SET EndDate = old.EndDate WHERE ((EndDate = old.BegDate) AND (PKey = old.PKey));
END ^
CREATE TABLE UslDivisionsKeys ( Code INTEGER NOT NULL );
ALTER TABLE UslDivisionsKeys ADD CONSTRAINT XPKUslDivisionsKeys PRIMARY KEY (Code);
CREATE TABLE UslLgots ( Code INTEGER NOT NULL, Category INTEGER NOT NULL, Property INTEGER, Tax CURR_TYPE, Usl INTEGER NOT NULL, NachCoeff INTEGER NOT NULL, Nalog INTEGER NOT NULL, BegDate INTEGER NOT NULL, Info INTEGER NOT NULL, EndDate INTEGER NOT NULL );
ALTER TABLE UslLgots ADD CONSTRAINT XPKUslLgots PRIMARY KEY (Code);
CREATE TABLE UslProps ( Code INTEGER NOT NULL, PKey INTEGER NOT NULL, Tag INTEGER NOT NULL, ValInteger INTEGER, ValFloat FLOAT, BegDate DATE_TYPE, EndDate DATE_TYPE );
ALTER TABLE UslProps ADD CONSTRAINT XPKUslProps PRIMARY KEY (Code);
CREATE TRIGGER UslProps_BUH FOR UslProps BEFORE UPDATE POSITION 0 AS BEGIN
/* Изменение BegDate */ IF (new.BegDate <> old.BegDate) THEN BEGIN IF (new.BegDate < old.BegDate) THEN BEGIN /* Расширение BegDate */ UPDATE UslProps SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение BegDate */ UPDATE UslProps SET EndDate = new.BegDate WHERE ((EndDate = old.BegDate) AND (PKey = new.PKey));
END END
/* Изменение EndDate */ IF (new.EndDate <> old.EndDate) THEN BEGIN IF (new.EndDate > old.EndDate) THEN BEGIN /* Расширение EndDate */ UPDATE UslProps SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение EndDate */ UPDATE UslProps SET BegDate = new.EndDate WHERE ((BegDate = old.EndDate) AND (PKey = new.PKey));
END END
/* Сборка мусора */ DELETE FROM UslProps WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code));
END ^
CREATE TRIGGER UslProps_BIH FOR UslProps BEFORE INSERT POSITION 0 AS BEGIN
DELETE FROM UslProps WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey));
UPDATE UslProps SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
UPDATE UslProps SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ^
CREATE TRIGGER UslProps_BDH FOR UslProps BEFORE DELETE POSITION 0 AS BEGIN
UPDATE UslProps SET EndDate = old.EndDate WHERE ((EndDate = old.BegDate) AND (PKey = old.PKey));
END ^
CREATE TABLE UslPropsKeys ( Code INTEGER NOT NULL );
ALTER TABLE UslPropsKeys ADD CONSTRAINT XPKUslPropsKeys PRIMARY KEY (Code);
CREATE TABLE Usls ( Code INTEGER NOT NULL, PKey INTEGER NOT NULL, Division INTEGER NOT NULL, UslType INTEGER NOT NULL, Name CHAR(64) NOT NULL, BegDate DATE_TYPE, EndDate DATE_TYPE );
CREATE INDEX XIEUslsName ON Usls ( Name );
ALTER TABLE Usls ADD CONSTRAINT XPKUsls PRIMARY KEY (Code);
CREATE TRIGGER Usls_BUH FOR Usls BEFORE UPDATE POSITION 0 AS BEGIN
/* Изменение BegDate */ IF (new.BegDate <> old.BegDate) THEN BEGIN IF (new.BegDate < old.BegDate) THEN BEGIN /* Расширение BegDate */ UPDATE Usls SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение BegDate */ UPDATE Usls SET EndDate = new.BegDate WHERE ((EndDate = old.BegDate) AND (PKey = new.PKey));
END END
/* Изменение EndDate */ IF (new.EndDate <> old.EndDate) THEN BEGIN IF (new.EndDate > old.EndDate) THEN BEGIN /* Расширение EndDate */ UPDATE Usls SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ELSE BEGIN /* Сужение EndDate */ UPDATE Usls SET BegDate = new.EndDate WHERE ((BegDate = old.EndDate) AND (PKey = new.PKey));
END END
/* Сборка мусора */ DELETE FROM Usls WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code));
END ^
CREATE TRIGGER Usls_BIH FOR Usls BEFORE INSERT POSITION 0 AS BEGIN
DELETE FROM Usls WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey));
UPDATE Usls SET BegDate = new.EndDate WHERE ((new.EndDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
UPDATE Usls SET EndDate = new.BegDate WHERE ((new.BegDate BETWEEN BegDate AND EndDate) AND (PKey = new.PKey));
END ^
CREATE TRIGGER Usls_BDH FOR Usls BEFORE DELETE POSITION 0 AS BEGIN
UPDATE Usls SET EndDate = old.EndDate WHERE ((EndDate = old.BegDate) AND (PKey = old.PKey));
END ^
CREATE TABLE UslsKeys ( Code INTEGER NOT NULL );
ALTER TABLE UslsKeys ADD CONSTRAINT XPKUslsKeys PRIMARY KEY (Code);
CREATE TABLE UslTypes ( Code INTEGER NOT NULL, Name DESCR_TYPE );
ALTER TABLE UslTypes ADD CONSTRAINT XPKUslTypes PRIMARY KEY (Code);
ALTER TABLE Nach ADD CONSTRAINT R_59 FOREIGN KEY (Usl) REFERENCES UslsKeys;
ALTER TABLE Nach ADD CONSTRAINT R_57 FOREIGN KEY (Phone) REFERENCES PhonesKeys;
ALTER TABLE Nach ADD FOREIGN KEY (Owner) REFERENCES PhonesOwnersKeys;
ALTER TABLE NachBillings ADD CONSTRAINT R_65 FOREIGN KEY (Division) REFERENCES UslDivisionsKeys;
ALTER TABLE NachBillings ADD FOREIGN KEY (BillDateCode) REFERENCES NachBillDates;
ALTER TABLE NachBillings ADD FOREIGN KEY (Owner) REFERENCES PhonesOwnersKeys;
ALTER TABLE NachConstUsl ADD CONSTRAINT R_60 FOREIGN KEY (Usl) REFERENCES UslsKeys;
ALTER TABLE NachConstUsl ADD CONSTRAINT R_58 FOREIGN KEY (Phone) REFERENCES PhonesKeys;
ALTER TABLE NachConstUsl ADD FOREIGN KEY (Owner) REFERENCES PhonesOwnersKeys;
ALTER TABLE Phones ADD FOREIGN KEY (Owner) REFERENCES PhonesOwnersKeys;
ALTER TABLE Phones ADD FOREIGN KEY (PKey) REFERENCES PhonesKeys;
ALTER TABLE Phones ADD FOREIGN KEY (Street) REFERENCES PhonesStreets;
ALTER TABLE PhonesOwners ADD FOREIGN KEY (PostStation) REFERENCES PhonesPostStations;
ALTER TABLE PhonesOwners ADD FOREIGN KEY (Street) REFERENCES PhonesStreets;
ALTER TABLE PhonesOwners ADD FOREIGN KEY (Bank) REFERENCES PhonesBanks;
ALTER TABLE PhonesOwners ADD FOREIGN KEY (Category) REFERENCES UslCatKeys;
ALTER TABLE PhonesOwners ADD FOREIGN KEY (PKey) REFERENCES PhonesOwnersKeys;
ALTER TABLE PhonesPostStations ADD CONSTRAINT R_62 FOREIGN KEY (Region) REFERENCES PhonesRegions;
ALTER TABLE PhonesStations ADD FOREIGN KEY (Region) REFERENCES PhonesRegions;
ALTER TABLE PhonesStreets ADD FOREIGN KEY (Region) REFERENCES PhonesRegions;
ALTER TABLE PhonesStreets ADD FOREIGN KEY (Station) REFERENCES PhonesStations;
ALTER TABLE Plat ADD CONSTRAINT R_61 FOREIGN KEY (ToUsl) REFERENCES UslsKeys;
ALTER TABLE Plat ADD FOREIGN KEY (Owner) REFERENCES PhonesOwnersKeys;
ALTER TABLE SysSettings ADD FOREIGN KEY (NullOwner) REFERENCES PhonesOwnersKeys;
ALTER TABLE SysSettings ADD FOREIGN KEY (TimeTalksUsl) REFERENCES UslsKeys;
ALTER TABLE Talks ADD FOREIGN KEY (ToPhone) REFERENCES PhonesKeys;
ALTER TABLE Talks ADD FOREIGN KEY (Phone) REFERENCES PhonesKeys;
ALTER TABLE Talks ADD FOREIGN KEY (DayCode) REFERENCES TalksPay;
ALTER TABLE TalksPay ADD FOREIGN KEY (Phone) REFERENCES PhonesKeys;
ALTER TABLE UslCat ADD FOREIGN KEY (PKey) REFERENCES UslCatKeys;
ALTER TABLE UslDivisions ADD CONSTRAINT R_63 FOREIGN KEY (PKey) REFERENCES UslDivisionsKeys;
ALTER TABLE UslLgots ADD CONSTRAINT R_50 FOREIGN KEY (Property) REFERENCES UslPropsKeys;
ALTER TABLE UslLgots ADD FOREIGN KEY (Usl) REFERENCES UslsKeys;
ALTER TABLE UslLgots ADD FOREIGN KEY (Category) REFERENCES UslCatKeys;
ALTER TABLE UslProps ADD CONSTRAINT R_51 FOREIGN KEY (PKey) REFERENCES UslPropsKeys;
ALTER TABLE Usls ADD CONSTRAINT R_64 FOREIGN KEY (Division) REFERENCES UslDivisionsKeys;
ALTER TABLE Usls ADD FOREIGN KEY (UslType) REFERENCES UslTypes;
ALTER TABLE Usls ADD FOREIGN KEY (PKey) REFERENCES UslsKeys;
CREATE PROCEDURE PrGenUslPropsKeys RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genUslPropsKeys, 1);
END ^
CREATE PROCEDURE PrGenUslProps RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genUslProps, 1);
END ^
CREATE PROCEDURE PrGenPhonesRegions RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genPhonesRegions, 1);
END ^
CREATE PROCEDURE PrGenPhonesStations RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genPhonesStations, 1);
END ^
CREATE PROCEDURE PrGenPhonesStreets RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genPhonesStreets, 1);
END ^
CREATE PROCEDURE PrGenPhonesBanks RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genPhonesBanks, 1);
END ^
CREATE PROCEDURE PrGenTalksPay RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genTalksPay, 1);
END ^
CREATE PROCEDURE PrGenTalks RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genTalks, 1);
END ^
CREATE PROCEDURE PrGenNach RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genNach, 1);
END ^
CREATE PROCEDURE PrGenNachBillings RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genNachBillings, 1);
END ^
CREATE PROCEDURE PrGenNachBillDates RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genNachBillDates, 1);
END ^
CREATE PROCEDURE PrGenNachConstUsl RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genNachConstUsl, 1);
END ^
CREATE PROCEDURE PrGenUslDivisions RETURNS (ACode INTEGER) AS BEGIN ACode = GEN_ID(genUslDivisions, 1);
END ^
CREATE PROCEDURE PrGenUslLgots RETURNS (ACode INTEGER)
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|