Афанасьев Павел Александрович Разработка электронного справочник
Вид материала | Справочник |
- Виктор Александрович Афанасьев © Евгений Сергеевич Романов © Александр Алексеевич Никишов, 592.86kb.
- Вадим Александрович Чернобров, Александр Борисович Петухов, Иван Анатольевич Соболев:, 3271.24kb.
- Вадим Александрович Чернобров, Александр Борисович Петухов, Иван Анатольевич Соболев, 3270.03kb.
- Дмитрий Сергеевич Лихачёв, Борис Александрович Рыбаков, Алексей Александрович Шахматов., 279.29kb.
- Афанасьев Андрей Александрович исследование, 1325.47kb.
- Планы семинарских занятий по дисциплине «экономика зарубежных стран», 95.91kb.
- Орская навигация, 48.92kb.
- Заочной формы обучения, 10.66kb.
- Исследование и прогнозирование рынков, 7.92kb.
- Кокарев Павел Александрович, 62.06kb.
3. Энергоресурсы и специфика их сбыта
3.1.Первая электростанция в томске
Рис. 2 ЗАО "Горэлектросети"
В апреле 1895г. в Томске было учреждено Товарищество «Технико-промышленное бюро и Кампания». На месте впадения Ушайки в Томь концессионеры построили Городскую электростанцию. Вечером 31 декабря 1895г. станция дала первый ток. Цепь городских фонарей осветила улицы Миллионную, Магистратскую и Набережную Ушайки. Первенец сибирской энергетики дал городу электричество. Свет фонарей вызвал к жизни Городские электрические сети. Это было начало. Долгое время электрические сети города оставались структурным подразделением ГЕС-1. Все энергопредприятия в то время располагались в одном знании – на Конной площади, 10. Обслуживание горсетей осуществлялось двумя машинами и конным обозом.
С 60-х Томск стал бурно строиться. Активно возводились промышленные, социальные объекты, жилье. Затем наступила эра нефтегазовой отрасли. И вслед за разработчиками земных недр энергетики продвигались на Север области. Деятельность «Томскэнерго» приобретала областной характер. А электрохозяйство Томска становилось все более специализированно-городским. И однажды для обслуживания коммунально-бытовых потребителей Томска были образованы «Городские электрические сети». Это произошло 1 апреля 1964 года.
3.2. МЕСТО ЗАО «ГОРЭЛЕКТРОСЕТИ» в системе энергоснабжения
З
АО «Горэлектросети» по своей природе является предприятием-посредником. Покупая электроэнергию у «Томскэнерго» оно обеспечивает бесперебойное электроснабжение города. Схематично место «Горэлектросети» в структуре энергоснабжения можно представить на рисунке 3.
Рис. 3 Место ЗАО «Горэлектросети» в системе энергоснабжения города
С
труктура потребителей «Горэлектросети» представлена на рисунке 4.
Рис. 4 Структура потребителей электроэнергии
3.3. оперативно диспетчерская служба
Оперативно-диспетчерская служба является структурным подразделением предприятия и находится в прямом подчинении главного инженера. Среди задач решаемых оперативно-диспетчерской службой такие как:
- Круглосуточный контроль над состоянием системы энергоснабжения.
- Принятие решений по устранению аварийных ситуаций.
- Накопление и обобщение статистики.
- Прием в эксплуатацию новых объектов.
- Планирование развития системы энергоснабжения, на основании накопленной статистики.
- Планирование мероприятий по плановому обслуживанию объектов системы энергоснабжения.
4. Алгоритмы и структуры данных
4.1. структура базы данных
Представленная база данных соответствует реляционной технологии построения баз данных (БД). Реляционная схема БД представлена в приложении 4. Все таблицы БД можно условно разделить на три группы:
- Таблицы, содержащие информацию о реальных объектах и их свойствах (подстанциях, зданиях и т.п.).
- Таблицы, отражающие информацию о связях между объектами реального мира и их свойствах.
- Таблицы-справочники, хранящие типовые значения некоторых свойств реальных объектов.
Таблицы первого типа предназначены для хранения информации об основных объектах предметной области. К таким таблицам относятся:
- STATIONS – содержит информацию о трансформаторных подстанциях и фидерных пунктах, их основных характеристиках;
- SECTIONS,CELLS,ABONENT_DEVICE,DIST_DEVICE – хранят информацию о структурных частях трансформаторных подстанций и их основных параметрах;
- OBJECTS – хранит информацию о зданиях и сооружениях на которые поступает электроэнергия;
- ORGS – содержит данные об организациях - абонентах электрической сети;
- ABONENTS – хранит информацию об абонентах – физических лицах;
Таблицы, отражающие связи объектов предназначены для хранения свойств этих связей, а так же для идентификации объектов по их связям. Примером такой таблицы является таблица STATION_HAS_EQUIPMENT, связывающая таблицы STATIONS и ADD_EQUIPMENT связью типа «многие-ко-многим». Связь отражает количество дополнительного оборудования, имеющегося на подстанции или фидерном пункте. Собственным свойством данной связи является количество дополнительного оборудования.
К таблицам-справочникам необходимо отнести следующие таблицы:
- STREETS – содержит названия улиц города;
- OBJECT_KINDS – хранит информацию и видах зданий с точки зрения их предназначения и категории;
- STATION_KINDS – виды трансформаторных подстанций и фидерных пунктов;
- ACTION_KINDS – содержит возможные типы событий, отраженных в журнале подстанции;
4.1.1. основные объекты предметной области
Основными объектами предметной области являются: трансформаторные подстанции и фидерные пункты, строительные здания и сооружения, участвующие в системе энергоснабжения, организации, являющиеся абонентами электросети как в качестве владельцев зданий и сооружений, снабжаемых электроэнергией.
4.1.1.1. Объект «подстанция»
Под объектом «Подстанция» подразумеваются некоторые пункты – узлы системы энергоснабжения, предназначенные для обеспечения электроэнергией подключенных к ним зданий и сооружений, изменения параметров электроэнергии (уменьшения напряжения и т.п.), защиты от перегрузок и так далее. Информация о подстанциях хранится в таблице STATIONS, таблица содержит следующие поля:
- ID – уникальный идентификатор подстанции, служебное поле, используется как внешний ключ в других таблицах;
- KIND_ID – внешний ключ, ссылается на таблицу-справочник содержащую возможные типы подстанций;
- ORG_ID – внешний ключ, указывающий код организации-владельца подстанции в таблице ORGS;
- CELL610_ID – код ячейки подстанции, от которой данная подстанция получает электроэнергию, информация об ячейках содержится в таблице CELLS;
- NAME – название подстанции занесенное в документы, по этому названию осуществляется поиск;
- ADRESS – адрес ближайшего от подстанции строительного сооружения;
- ADD_IF – дополнительная текстовая информация любого характера;
4.1.1.2. объект «здание»
Под объектом «ЗДАНИЕ» следует понимать любое строительное или иное сооружение участвующее в системе энергоснабжения, то есть получающие электроэнергию от одной из подстанций. Подключение сооружения осуществляется к вводному устройству потребителя, находящемуся в подстанции, которая осуществляет энергоснабжение данного объекта. Вводное устройство потребителя находится в свою очередь в одной из секций подстанции. Информация об объектах типа «ЗДАНИЕ» содержится в таблице OBJECTS, которая имеет следующие поля:
- ID – уникальный идентификатор строительного сооружения, служебное поле, используется как внешний ключ в других таблицах;
- KIND_ID – внешний ключ, ссылка на таблицу-справочник OBJECT_KINDS, содержащую возможные типы объектов и их категории;
- NAME – название объекта
- STREET_ID – внешний ключ, код улицы, ссылка на таблицу-справочник STREETS, содержащую список улиц;
- HOUSE – номер здания на улице;
- SQUARE – общая площадь сооружения;
- LIVESQUARE – жилая площадь сооружения (для нежилых объектов равна нулю);
- BUILTSQUARE – общая площадь застройки;
- WIDTH – ширина сооружения;
- LENGTH – длина сооружения;
- HEIGHT – высота сооружения;
- PROJECT – ссылка на документ, содержащий проект данного сооружения;
Как отмечено выше каждый объект подключается к вводному устройству потребителя, информация о котором содержится в таблице ABONENT_DEVICE, которая имеет следующие поля:
- ID – уникальный идентификатор строительного сооружения, служебное поле, используется как внешний ключ в других таблицах;
- DIST_DEVICE_ID – внешний ключ, идентификатор распределительного устройства, в составе которого находится данное вводное устройство потребителя;
- OBJECT_ID – идентификатор строительного сооружения, которое питается через данное вводное устройство потребителя;
- NAME – название вводного устройства потребителя;
- DESIGN_LOAD – расчетная нагрузка устройства;
Вводное устройство потребителя, в свою очередь, находится в составе распределительного устройства – еще одного элемента трансформаторной подстанции. Информация о распределительных устройствах находится в таблице DIST_DEVICE, которая содержит следующие поля:
- ID – уникальный идентификатор распределительного устройства, служебное поле, используется как внешний ключ в других таблицах;
- SECTION_ID – код секции, в которой находится данное распределительное устройство;
- NAME – название распределительного устройства;
- ISOLATOR_TYPE – тип опорных изоляторов;
- ENTER_TYPE – тип ввода;
- NOM_VOLTAGE – номинальное напряжение;
- NOM_AMPERAGE – номинальный ток;
- DYNAMIC_STABILITY – ток динамической устойчивости;
- THERMO_STABILITY – ток термической устойчивости;
Распределительное устройство находится в составе секции трансформаторной подстанции. Информация о секциях трансформаторной подстанции находится в таблице SECTIONS, которая имеет следующие поля:
- ID - уникальный идентификатор секции, служебное поле, используется как внешний ключ в других таблицах;
- STATION_ID – внешний ключ, код подстанции, частью которой является данная секция;
- SECTION_KIND – внешний ключ, ссылается на таблицу справочник SECTION_KINDS, которая содержит возможные типы секций;
- NUMBER – номер секции внутри подстанции;
- NAME – название секции;
- NOM_VOLTAGE – номинальное напряжение;
4.1.1.3. объект «организация»
Объекты данного типа рассматриваются с двух точек зрения. Первая – это организация как владелец объекта, на который подается электроэнергия. Вторая – организация, которая участвует в системе энергоснабжения как владелец одной или нескольких подстанций. Это, как правило, крупные организации, например заводы. Информация об организациях хранится в таблице ORGS, которая имеет следующие поля:
- ID - уникальный идентификатор организации, служебное поле, используется как внешний ключ в других таблицах;
- NAME – название организации;
- STREET_ID – внешний ключ, код улицы на которой расположена организация;
- HOUSE – номер здания, в котором находится организация;
- FLAT – номер помещения, в котором находится организация;
- ADD_INF – реквизиты и другая произвольная текстовая информация;
4.1.1.4. объект «абонент»
Объекты этого типа рассматриваются с точки зрения их проживания в зданиях, участвующих в системе энергоснабжения. Информация об абонентах хранится в таблице ABONENTS, которая имеет следующие поля:
- ID – уникальный идентификатор абонента (лицевой счет);
- FIRSTNAME – имя абонента;
- FATHERNAME – отчество абонента;
- LASTNAME – фамилия абонента;
- FULLNAME – полное имя абонента, вычисляемое поле, формируется из FIRSTNAME, FATHERNAME и LASTNAME;
- STREET_ID – внешний ключ, код улицы, на которой проживает абонент;
- HOUSE – номер здания в котором проживает абонент;
- FLАТ – номер квартиры, в которой проживает абонент;
- PHONE – номер телефона абонента;
4.1.2. таблицы-справочники
Таблицы-справочники предназначены для хранения информации, которая часто используется в определении свойств некоторых объектов предметной области, и при этом редко изменяется и дополняется. К таблицам справочникам относятся:
- ABONENT_KINDS – содержит возможные виды зданий и сооружений потребляющих электроэнергию и их категории. Категория абонента означает степень его важности с точки зрения возможного отключения электроэнергии. К наивысшей первой категории относятся, например, спецлаборатории, больницы, поликлиники и корпуса ВУЗов; ко второй – детский сады и школы; к третьей – административные здания и жилые дома.
- ADD_EQUIPMENT – содержит информацию о дополнительном оборудовании которое может находится на подстанции. К дополнительному оборудованию относятся, например, ящик с песком, изоляционные коврики, ограждения и так далее.
- ACTION_KINDS – отражает возможные типы событий записанные в журнале подстанции. Например, текущий ремонт, осмотр, монтаж и так далее.
- CELL_KINDS – содержит возможные типы высоковольтных ячеек подстанции;
- SECTION_KINDS – содержит описание типов секций подстанции;
- STATION_KINDS – содержит типы подстанций;
Все таблицы-справочники состоят из первичного ключа ID и поля NAME, которое содержит описание характеристики.
4.1.3. Хранимые процедуры и триггеры
Хранимая процедура – некоторая последовательность действий, которая хранится на сервере и исполняется на нем. В представленной базе данных имеется только одна хранимая процедура GENERATE_ID, которая используется для генерации уникальных первичных ключей таблиц. Это обусловлено тем, что все бизнес-процессы деловой модели предметной области достаточно просты и сводятся в основном к добавлению, изменению и удалению записей без выполнения каких-либо сложных проверок целостности и, таким образом, не требуют вынесения их в отдельные процедуры.
Поскольку в клиентском приложении используется механизм отложенных изменений, генерация уникальных первичных ключей триггерами становится невозможной, так как при добавлении записей они хранятся не на сервере, а в буфере клиентского приложения, где они уже должны иметь уникальные ключи. Эту проблему решает хранимая процедура GENERATE_ID, которая генерирует первичный ключ для записи, которая еще находится в буфере клиентского приложения и не передана на сервер.
Для поддержания целостности базы данных при удалении записей используются триггеры каскадного удаления. Механизм каскадного удаления предполагает удаление сначала всех зависимых записей в других таблицах, а потом и требуемой записи. Таким образом механизм каскадного удаления позволяет поддерживать ссылочную целостность базы данных в непротиворечивом состоянии.
4.2. алгоритмы и структуры данных клиентской части программы
4.2.1. Навигация по данным
Структура базы данных, взаимосвязи объектов, их свойства представлены пользователю посредством визуальной компоненты TTreeView. Эта компонента является стандартным классом Windows и используется во многих приложениях Windows, например, в приложении Windows Explorer. Компонента предназначена для отображения информации в древовидной форме, то есть, способна отобразить некоторую иерархическую структуру объектов, находящихся в таких отношениях как «есть часть», «находится в», «обеспечивает электроэнергией» и другие. Таким образом, пользователь осуществляет навигацию по объектам в порядке их подчиненности друг другу. То есть навигация по данным организована так, что, начав с любого объекта, пользователь по его связям может перейти к любому связанному объекту.
4.2.2. компоненты визуализации данных
Для визуализации данных в программе использованы следующие компоненты Delphi:
- TLabel – используется для отображения названия характеристики или свойства объекта;
- TDBText – отображает текстовую информацию из базы данных, возможность редактирования информации отсутствует;
- TDBEdit – отображает текстовую информацию из базы данных, с возможностью редактирования;
- TDBMemo – отображает большие объемы текстовой информации из полей базы данных, имеющих тип BLOB.
- TDBTreeView – отображает текстовую информацию из базы данных в древовидной форме;
В целях уменьшения вероятности случайного исправления данных, для просмотра используются компоненты, которые не предусматривают возможности редактирования информации. Компоненты, редактирующие данные используются в отдельных формах, каждая из которых предназначена для определенного действия с объектом. Например, редактирование данных об организации осуществляется в отдельной форме TOrgsForm. В то же время вся необходимая информация обо всех объектах предметной области сосредоточена на главной форме.
4.2.3. компоненты для связи с базой данных
Для связи с базой данных в проекте использованы следующие невизуальные компоненты Delphi:
- TDatabase – так называемый псевдоним базы данных;
- TQuery – компонента содержащая набор данных, полученных в результате выполнения SQL-запроса к серверу баз данных;
- TDataSourse – компонента-посредник между набором данных и компонентами визуального отображения данных;
- TUpdateSQL – компонента осуществляющая модификацию базы данных при помощи SQL-запросов, которые в ней содержатся;
Компонента TDatabase используется для переопределения параметров соединения приложения с базой данных. Вообще параметры соединения указываются при создании алиаса в утилите BDE, однако при необходимости внести изменения параметры соединения без использования компоненты TDatabase пользователь должен вручную настроить алиас в помощью утилиты BDE. Использование компоненты TDatabase дает возможность автоматически при необходимости изменять параметры соединения с базой данных без использования каких-либо утилит, в скрытом от пользователя режиме.
Для каждой таблицы базы данных в приложении имеются три компоненты: TQuery, TDataSource и TUpdateSQL. Компонента TQuery содержит набор данных полученных от сервера в результате SQL-запроса. Однако данные, возвращенные сервером, имеют атрибут «только для чтения», и не могут быть изменены. Использование компоненты TUpdateSQL дает пользователя иллюзию работы с «живыми» данными, то есть, внося изменения в свои локальные данные, они автоматически изменяются на сервере. Для связи компонентов визуализации данных и компонентов, которые получают информацию из базы данных, используется компонента TDataSource.
4.2.4. Использование механизма отложенных изменений
Стандарт технологии «клиент-сервер» предполагает ведения журналов транзакций. То есть каждое изменение данных сначала записывается в журнал транзакции, а при ее успешном завершении переписывается в базу данных. Транзакция стартует с момента внесения пользователем первого изменения. Использование механизма отложенных изменений заключается в следующем. При создании, изменении или удалении некоторой записи эти действия осуществляются с локальным набором данных на компьютере клиента. При необходимости применить изменения стартует неявная, скрытая от пользователя транзакция, в процессе которой все изменения передаются из буфера компьютера клиента в базу данных.
Преимущества использования данного механизма заключаются в следующем:
- меньшее количество транзакций;
- сокращение времени транзакций;
- сокращение сетевого трафика;