Смекни!
smekni.com

Контроль и учет технического состояния магистральных трубопроводов транспортирующих огнеопасные продукты (стр. 4 из 5)

- «Периодичность». Значением этого атрибута является периодичность проведения ревизий на участке трубопровода.

- «Дата заключения». Значением этого атрибута является дата заключения, когда было сделано заключение на основе ревизии.

- «Номер заключения». Значением этого атрибута является номер заключения.

- «Заключение». Значением этого атрибута является заключение которое было сделано экспертом в ходе проведения ревизии.

«Испытания участков». В этой таблице хранятся данные, содержащие всю информацию о проводившихся испытаниях на участке трубопровода.

- «Участок трубопровода». Значением этого атрибута является указатель на участок трубопровода к которому относится испытание.

- «Дата обследования». Значением этого атрибута является дата проведения испытания на участке трубопровода.

- «Наименование организации, проводившей обследование». Значением этого атрибута является наименование организации проводившей испытание участка трубопровода.

- «Ф.И.О. эксперта». Значением этого атрибута является Ф.И.О. эксперта, который проводил испытание участка трубопровода.

- «Дата следующего обследования». Значением этого атрибута является дата следующего проведения испытания.

- «Периодичность». Значением этого атрибута является периодичность проведения испытаний на участке трубопровода.

- «Дата заключения». Значением этого атрибута является дата заключения, когда было сделано заключение на основе испытания.

- «Номер заключения». Значением этого атрибута является номер заключения.

- «Заключение». Значением этого атрибута является заключение которое было сделано экспертом в ходе проведения испытания.

«Диагностика участков». В этой таблице хранятся данные, содержащие всю информацию о проводившихся диагностиках на участке трубопровода.

- «Участок трубопровода». Значением этого атрибута является указатель на участок трубопровода к которому относится диагностика.

- «Дата обследования». Значением этого атрибута является дата проведения диагностики на участке трубопровода.

- «Наименование организации, проводившей обследование». Значением этого атрибута является наименование организации проводившей диагностику участка трубопровода.

- «Ф.И.О. эксперта». Значением этого атрибута является Ф.И.О. эксперта, который проводил диагностику участка трубопровода.

- «Дата следующего обследования». Значением этого атрибута является дата следующего проведения диагностики.

- «Периодичность». Значением этого атрибута является периодичность проведения диагностик на участке трубопровода.

- «Дата заключения». Значением этого атрибута является дата заключения, когда было сделано заключение на основе диагностики.

- «Номер заключения». Значением этого атрибута является номер заключения.

- «Заключение». Значением этого атрибута является заключение которое было сделано экспертом в ходе проведения диагностики.

«Ремонт участков». В этой таблице хранятся данные, содержащие всю информацию о проводившихся ремонтах на участке трубопровода.

- «Участок трубопровода». Значением этого атрибута является указатель на участок трубопровода к которому относится ремонт.

- «Дата поломки». Значением этого атрибута является дата поломки участка трубопровода.

- «Дата начала ремонта». Значением этого атрибута является дата начала ремонта участка трубопровода.

- «Заключение о поломке». Значением этого атрибута является заключение о поломке участка трубопровода.

- «Дата конца ремонта». Значением этого атрибута является дата окончания ремонта участка трубопровода.

- «Выполненные работы». Значением этого атрибута является информация которая содержит перечень всех выполненных работ в ходе ремонта участка трубопровода.


Описанные сущности представлены на ER-диаграмме на рис. 1.


Рис. 1. ER – диаграмма.


Переход от ER-диаграммы к схеме базы данных осуществляется по следующим правилам:

· сущности преобразуются в таблицы,

· связи один ко многим преобразуются во внешние ключи,

· связи многие ко многим преобразуются в таблицы.

Полученная по этим правилам схема базы данных расположена на рисунке 2.


Рис. 2.

2.3 Хранимые процедуры

Хранимая процедура для удаления записи из таблицы «Трубопроводы»:

CREATE PROCEDURE spDelPipeline(@Id uniqueidentifier) AS

DELETE FROM CommentaryPipeline

WHERE Id_Pipeline = @id

DELETE FROM InspectionPipeline

WHERE Id_Pipeline = @id

Delete from RevisionPartsPipeline where

RevisionPartsPipeline.id_RevisionPartsPipeline in

(select RevisionPartsPipeline.id_RevisionPartsPipeline from

((Pipeline inner join PartsPipeline on Pipeline.id_Pipeline = PartsPipeline.id_Pipeline) inner join

RevisionPartsPipeline on PartsPipeline.id_PartsPipeline = RevisionPartsPipeline.id_PartsPipeline)

where Pipeline.id_Pipeline=@id)

Delete from TestPartsPipeline where

TestPartsPipeline.id_TestPartsPipeline in

(select TestPartsPipeline.id_TestPartsPipeline from

((Pipeline inner join PartsPipeline on Pipeline.id_Pipeline = PartsPipeline.id_Pipeline) inner join

TestPartsPipeline on PartsPipeline.id_PartsPipeline = TestPartsPipeline.id_PartsPipeline)

where Pipeline.id_Pipeline=@id)

Delete from RefusalPartsPipeline where

RefusalPartsPipeline.id_RefusalPartsPipeline in

(select RefusalPartsPipeline.id_RefusalPartsPipeline from

((Pipeline inner join PartsPipeline on Pipeline.id_Pipeline = PartsPipeline.id_Pipeline) inner join

RefusalPartsPipeline on PartsPipeline.id_PartsPipeline = RefusalPartsPipeline.id_PartsPipeline)

where Pipeline.id_Pipeline=@id)

Delete from DiagnosticPartsPipeline where

DiagnosticPartsPipeline.id_DiagnosticPartsPipeline in

(select DiagnosticPartsPipeline.id_DiagnosticPartsPipeline from

((Pipeline inner join PartsPipeline on Pipeline.id_Pipeline = PartsPipeline.id_Pipeline) inner join

DiagnosticPartsPipeline on PartsPipeline.id_PartsPipeline = DiagnosticPartsPipeline.id_PartsPipeline)

where Pipeline.id_Pipeline=@id)

Delete from RepairPartsPipeline where

RepairPartsPipeline.id_RepairPartsPipeline in

(select RepairPartsPipeline.id_RepairPartsPipeline from

((Pipeline inner join PartsPipeline on Pipeline.id_Pipeline = PartsPipeline.id_Pipeline) inner join

RepairPartsPipeline on PartsPipeline.id_PartsPipeline = RepairPartsPipeline.id_PartsPipeline)

where Pipeline.id_Pipeline=@id)

DELETE FROM PartsPipeline

WHERE Id_Pipeline=@id

DELETE FROM Pipeline

WHERE Id_Pipeline=@Id

GO

Хранимая процедура для удаления записи из таблицы «Транспортируемые продукты» :

CREATE PROCEDURE SPDelDic_ClassTransportProductTE(@idrec uniqueidentifier) AS

DECLARE @ins_error int, @ROWCOUNT int

BEGIN TRANSACTION TranName

DELETE FROM DIC_CLASSTRANSPORTPRODUCTTE

WHERE Id_Dic_ClassTransportProductTE = @idrec

select @ROWCOUNT=@@ROWCOUNT, @ins_error=@@error

if @ins_error=0

begin

COMMIT TRANSACTION TranName

return (0)

end

else

begin

ROLLBACK TRAN TranName

return (1)

end

GO

2.4 Запросы

Запрос на добавления записи в таблицу «Трубопроводы»:

SQLStr.Add('INSERT INTO dbo.PartsPipeline (Id_PartsPipeline, Id_Pipeline, '+

'NameParts, NameProjectOrganizations, DateEndConstract, DatePutting, '+ 'DateEndServiceLife, DateLeavePutting, DepartureTehPar, '+ 'Id_Dic_ClassDBAOrganizationsTE, 'Id_Dic_ClassTypeIsolationTE, '+ Id_Dic_ClassTypeHeatingTE, Id_Dic_ClassTypeInhibitorTE, '+

'IncutDate, Length, StellGrade, OuterDiameter, WorkingPressure, WorkingTemperature, '+

'NominalThickness, ActualThickness, VelocityCorrosion, '+

'MotiveLeavePutting, NumberProject) '+

'VALUES ('''+ Id_PartsPipeLine +''', '+

''''+ Id_Pipeline +''', '+

''''+ memNameParts.text +''', '+

''''+ memNameProjectOrg.text +''','+

''+ DateTimeToStrDB(deDateEndConstract.Date,' : ') +', '+

''+ DateTimeToStrDB(deDatePutting.Date,' : ') +', '+

''+ DateTimeToStrDB(deDateEndServiceLife.Date,' : ') +', '+

''+ DateTimeToStrDB(deDateLeavePutting.Date,' : ') +', '+

''''+ memDepartureTehPar.text +''', '+

Id_ClassDBAOrganizations +', '+

Id_ClassTypeIsolation +', '+

Id_ClassTypeHeating +', '+

Id_ClassTypeInhibitor +', '+

''+ DateTimeToStrDB(deIncutDate.Date,' : ') +', '+

''''+ edtLength.text +''', '+

''''+ edtStellGrade.text +''', '+

''''+ edtOuterDiameter.text +''', '+

''''+ edtWorkingPressure.text +''', '+

''''+ edtWorkingTemperature.text +''', '+

''''+ edtNominalThickness.text +''', '+

''''+ edtActualThickness.text +''', '+

''''+ edtVelocityCorrosion.text +''', '+

''''+ memMotiveLeavePutting.text +''', '+

''''+ edtNumberProject.text +''')');

Запрос на обновление записи примечания к трубопроводу в таблице «Примечания»:

MemberCommentary.Add('UPDATE dbo.CommentaryPipeline SET '+

'Commentary = '''+ Data.Commentary +''', '+

'DateCommentary = '+ ConvertFormatDate(Data.DateCommentary) +' '+

' WHERE Id_CommentaryPipeline = '''+ Data.Id_Commentary +''' ');

2.5 Выбор модели базы данных

Существую три дореляционных подхода к организации баз данных:

· системы, основанные на инвертированных списках,

· иерархические системы,

· сетевые системы.

Одними из современных подходов к организации баз данных являются объектно-ориентированный и реляционный.

Данные в рамках рассматриваемой предметной области сильно структурированы. В данной работе использована реляционная модель, поскольку она является наиболее эффективной для представления такого рода данных.

2.6 Организация взаимодействия с пользователем

Пользовательский интерфейс должен предоставлять следующие функции:

· поиск по типу;

· поиск по виду;

· поиск по наименованию трубопровода;

· поиск по категории трубопровода;

· поиск по транспортируемым продуктам;

· поиск по регистрационному номеру ФСТН;

· поиск по дате регистрации в ФСТН;

· поиск по регистрационному номеру СТН;

· поиск по дате регистрации в СТН;

· поиск по месторождению;


3. ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ

3.1 Выбор средства разработки

Для реализации данного проекта был выбран язык Delphi. Будучи языком высокого уровня, он всё же предоставляет программисту полный контроль над машиной, позволяет переходить на язык более низкого уровня (ассемблер). Delphi является стандартом для приложений, где нужно быстродействие и малый размер кода при достаточно глобальных масштабах проекта.

В качестве рабочей среды разработки пользовательского приложения программы использовался Delphi 2005. Выбор именно этой среды разработки был обусловлен целым рядом факторов – эта среда позволяет быстро создавать приложения различной сложности, также она поддерживает все современные наработки как в собственно языке Pascal, так и разнообразных библиотек, необходимых для разработки.

3.2 Выбор СУБД

Для решения поставленной задачи СУБД должна отвечать следующим требованиям: