Афанасьев Павел Александрович Разработка электронного справочник

Вид материалаСправочник

Содержание


приложение 3: список файлов
Приложение 4: реляционная схема БД приложение 5: SQL-описание базы данных
Подобный материал:
1   2   3   4   5   6

приложение 3: список файлов


GESProject.exe – откомпилированный файл приложения.

Energy.gdb – файл базы данных СУБД InterBase Server.

MainUnit.pas,MainUnit.dfm – модуль главного окна.

AbDevUnit.pas, AbDevUnit.dfm – модуль окна вводного устройства потребителя.

Abonents.pas, Abonents.dfm – модуль окна работы с абонентами

Cells610.pas, Cells610.dfm – модуль окна работы с ячейками

DMUnit.pas, DMUnit.dfm – модуль данных, содержит невизуальные компоненты работы с базой данных.

DictionaryUnit.pas, DictionaryUnit.dfm – модуль окна службы справочников.

DistDevicesUnit.pas, DistDevicesUnit.dfm – модуль окна распределительного устройства.

JournalUnit.pas, JournalUnit.dfm – модуль окна журнала подстанции.

Objects.pas, Objects.dfm – модуль окна работы со зданиями.

OrgsUnit.pas, OrgsUnit.dfm – модуль окна работы с организациями.

Sections.pas,Sections.dfm – модуль окна работы с секциями подстанции.

SelectSourceUnit.pas, SelectSourceUnit.dfm – модуль окна выбора ячейки источника.

StationsUnit.pas, StationsUnit.dfm – модуль окна работы с подстанциями.

Приложение 4: реляционная схема БД

приложение 5: SQL-описание базы данных


/* Описания генераторов */

CREATE GENERATOR G_ABONENT_ID;

SET GENERATOR G_ABONENT_ID TO 0;

CREATE GENERATOR G_ACTION_KIND_ID;

SET GENERATOR G_ACTION_KIND_ID TO 0;

CREATE GENERATOR G_OBJECT_ID;

SET GENERATOR G_OBJECT_ID TO 0;

CREATE GENERATOR G_SECTIONS_ID;

SET GENERATOR G_SECTIONS_ID TO 0;

CREATE GENERATOR G_STATION_ID;

SET GENERATOR G_STATION_ID TO 0;

CREATE GENERATOR G_STATION_KIND_ID;

SET GENERATOR G_STATION_KIND_ID TO 0;

CREATE GENERATOR G_STREET_ID;

SET GENERATOR G_STREET_ID TO 0;

CREATE GENERATOR G_STREET_KIND_ID;

SET GENERATOR G_STREET_KIND_ID TO 0;


/* Объявления доменов */

CREATE DOMAIN D_ADD_INF AS BLOB sub_type 1 segment size 10 character set WIN1251;

CREATE DOMAIN D_ADRESS AS VARCHAR(50) character set WIN1251 collate PXW_CYRL;

CREATE DOMAIN D_DESCRIPTION AS VARCHAR(50) character set WIN1251 NOT NULL collate PXW_CYRL;

CREATE DOMAIN D_ID AS INTEGER NOT NULL ;

CREATE DOMAIN D_NAME AS VARCHAR(40) character set WIN1251 collate PXW_CYRL;

CREATE DOMAIN D_PERCENT AS NUMERIC (4, 2) DEFAULT 100.00 CHECK (VALUE<=100 AND VALUE>=0);

CREATE DOMAIN D_PHONE AS INTEGER;

CREATE DOMAIN D_RATIO AS NUMERIC (4, 2) DEFAULT 1 CHECK (VALUE<=1);

CREATE DOMAIN D_TEXT_ID AS VARCHAR(20) NOT NULL ;

CREATE DOMAIN D_TIME_STAMP AS DATE DEFAULT 'NOW';

CREATE DOMAIN D_USER_STAMP AS VARCHAR(20) DEFAULT 'USER';

CREATE DOMAIN D_VCH10 AS VARCHAR(10) character set WIN1251 collate PXW_CYRL;

CREATE DOMAIN D_VCH20 AS VARCHAR(20) character set WIN1251 collate PXW_CYRL;


/* Объявление таблиц */

/* Таблица: ABONENT_DEVICE */

/* Содержит информацию о вводных устройствах потребителя */

CREATE TABLE ABONENT_DEVICE (DIST_DEVICE_ID D_ID NOT NULL,

OBJECT_ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

DESIGN_LOAD D_VCH10 collate PXW_CYRL,

ID D_ID NOT NULL,

CONSTRAINT PK_ABONENT_DEVICE PRIMARY KEY (ID));


/* Таблица: ABONENT_KINDS */

/* Содержит информацию о типах зданий и их категории */

CREATE TABLE ABONENT_KINDS (ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

CATEGORY SMALLINT,

CONSTRAINT PK_ABONENT_KINDS PRIMARY KEY (ID));


/* Таблица: ACTION_KINDS */

/* Информация о типах событий, отраженных в журнале подстанции */

CREATE TABLE ACTION_KINDS (ID D_ID NOT NULL,

NAME D_NAME,

PRIMARY KEY (ID));


/* Таблица: ADD_EQUIPMENT */

/* Содержит виды дополнительного оборудования подстанций */

CREATE TABLE ADD_EQUIPMENT (ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

CONSTRAINT PK_ADD_EQUIPMENT PRIMARY KEY (ID));


/* Таблица: CELL610 */

/* Хранится информация о высоковольтных ячейках трансформаторных подстанций*/

CREATE TABLE CELL610 (ID D_ID NOT NULL,

SECTION_ID D_ID NOT NULL,

KIND_ID SMALLINT,

NUMBER D_VCH10 collate PXW_CYRL,

HEIGHT FLOAT,

NAME D_NAME collate PXW_CYRL,

WIDTH FLOAT,

DEPTH FLOAT,

ISOLATOR_NUMBER SMALLINT,

ISOLATOR_TYPE SMALLINT,

NORMAL_VOLTAGE D_VCH10 collate PXW_CYRL,

MAX_VOLTAGE SMALLINT,

CONSTRAINT PK_CELL610 PRIMARY KEY (ID));


/* Таблица: CELL610_KINDS */

/*Типы высоковольтных ячеек подстанций*/

CREATE TABLE CELL610_KINDS (ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

CONSTRAINT PK_CELL610_KINDS PRIMARY KEY (ID));


/* Таблица: DIST_DEVICE */

/* Информация о распределительных устройствах 0,4кВ */

CREATE TABLE DIST_DEVICE (ID D_ID NOT NULL,

SECTION_ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

ISOLATOR_TYPE D_NAME collate PXW_CYRL,

ENTER_TYPE D_NAME collate PXW_CYRL,

NOM_VOLTAGE D_VCH10 collate PXW_CYRL,

NOM_AMPERAGE D_VCH10 collate PXW_CYRL,

DYNAMIC_STABILITY D_VCH10 collate PXW_CYRL,

THERMO_STABILITY D_VCH10,

CONSTRAINT PK_DIST_DEVICE PRIMARY KEY (ID));


/* Таблица: OBJECTS */

/* Содержит информацию о зданиях и сооружениях, на которые подается электроэнергия */

CREATE TABLE OBJECTS (ID D_ID NOT NULL,

NAME D_NAME,

STREET_ID D_ID NOT NULL,

HOUSE D_VCH10 collate PXW_CYRL,

ADD_INF D_ADD_INF,

SQUARE FLOAT,

LIVESQUARE SMALLINT,

BULDSQUARE FLOAT,

B_WIDTH FLOAT,

B_LENGTH FLOAT,

B_HEIGHT FLOAT,

PROJECT D_NAME collate PXW_CYRL,

KIND_ID D_ID NOT NULL,

PRIMARY KEY (ID));


/* Таблица: ORG_ABONENTS */

/* Содержит информацию об организациях */

CREATE TABLE ORG_ABONENTS (ID D_ID NOT NULL,

NAME D_NAME,

STREET_ID D_ID NOT NULL,

HOUSE D_VCH10 collate PXW_CYRL,

FLAT D_VCH10 collate PXW_CYRL,

ADD_INF D_ADRESS collate PXW_CYRL,

PRIMARY KEY (ID));


/* Table: PEOPLE_ABONENTS */

/* Информация об абонентах – физических лицах */

CREATE TABLE PEOPLE_ABONENTS (ID D_ID NOT NULL,

LASTNAME D_VCH20 collate PXW_CYRL,

FIRSTNAME D_VCH20,

FATHERNAME D_VCH20 collate PXW_CYRL,

FULLNAME COMPUTED BY (LASTNAME || ' ' || FIRSTNAME || ' ' || LASTNAME),

STREET_ID D_ID NOT NULL,

HOUSE D_VCH10 collate PXW_CYRL,

FLAT D_VCH10 collate PXW_CYRL,

PHONE D_PHONE,

PRIMARY KEY (ID));


/* Таблица: SECTIONS */

/* Секции подстанции */

CREATE TABLE SECTIONS (ID D_ID NOT NULL,

SECTION_KIND D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

NUMBER D_VCH10 collate PXW_CYRL,

NORM_VOLTAGE D_VCH10 collate PXW_CYRL,

STATION_ID D_ID NOT NULL,

CONSTRAINT PK_SECTIONS PRIMARY KEY (ID));


/* Таблица: SECTION_KINDS */

/* Виды секций подстанции */

CREATE TABLE SECTION_KINDS (ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

CONSTRAINT PK_SECTION_KINDS PRIMARY KEY (ID));


/* Таблица: STATIONS */

/* Информация о подстанциях */

CREATE TABLE STATIONS (ID D_ID NOT NULL,

KIND_ID D_ID NOT NULL,

NAME D_NAME,

ADRESS D_ADRESS,

ADD_INF D_ADD_INF,

CELL610_ID D_ID NOT NULL,

ORG_ID D_ID NOT NULL,

PRIMARY KEY (ID));


/* Таблица: STATIONS_JOURNAL */

/* Журнал подстанции */

CREATE TABLE STATIONS_JOURNAL (STATION_ID D_ID NOT NULL,

ACTION_ID D_ID NOT NULL,

RECORD_DATE DATE,

TEXT BLOB sub_type 0 segment size 80);


/* Таблица: STATION_HAS_EQUIPMENT */

/* Отражает наличие дополнительного оборудования на подстанциях */

CREATE TABLE STATION_HAS_EQUIPMENT (STATION_ID D_ID NOT NULL,

NUMBER SMALLINT,

EQUIPMENT_ID D_ID NOT NULL);


/* Таблица: STATION_KINDS */

/* Виды подстанций */

CREATE TABLE STATION_KINDS (ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

CONSTRAINT PK_STATION_KINDS PRIMARY KEY (ID));


/* Таблица: STREETS */

/* Таблица-справочник улиц */

CREATE TABLE STREETS (ID D_ID NOT NULL,

NAME D_NAME collate PXW_CYRL,

CONSTRAINT PK_STREETS PRIMARY KEY (ID));


/* Определение внешних ключей таблиц */

ALTER TABLE CELL610 ADD CONSTRAINT FK_CELL610 FOREIGN KEY (KIND_ID) REFERENCES CELL610_KINDS(ID);

ALTER TABLE OBJECTS ADD CONSTRAINT FK_OBJECTS2 FOREIGN KEY (KIND_ID) REFERENCES ABONENT_KINDS(ID);

ALTER TABLE OBJECTS ADD CONSTRAINT FK_OBJECTS FOREIGN KEY (STREET_ID) REFERENCES STREETS(ID);

ALTER TABLE ORG_ABONENTS ADD CONSTRAINT FK_ORG_ABONENTS FOREIGN KEY (STREET_ID) REFERENCES STREETS(ID);

ALTER TABLE PEOPLE_ABONENTS ADD CONSTRAINT FK_PEOPLE_ABONENTS FOREIGN KEY (STREET_ID) REFERENCES STREETS(ID);

ALTER TABLE SECTIONS ADD CONSTRAINT FK_SECTIONS FOREIGN KEY (STATION_ID) REFERENCES STATIONS(ID);

ALTER TABLE STATIONS ADD CONSTRAINT FK_STATIONS FOREIGN KEY (KIND_ID) REFERENCES STATION_KINDS(ID);

ALTER TABLE STATIONS ADD CONSTRAINT FK_STATIONS2 FOREIGN KEY (ORG_ID) REFERENCES ORG_ABONENTS(ID);

ALTER TABLE STATIONS_JOURNAL ADD FOREIGN KEY (ACTION_ID) REFERENCES ACTION_KINDS(ID);

ALTER TABLE STATIONS_JOURNAL ADD FOREIGN KEY (STATION_ID) REFERENCES STATIONS(ID);

ALTER TABLE STATION_HAS_EQUIPMENT ADD CONSTRAINT FK_STATION_HAS_EQUIPMENT2 FOREIGN KEY (EQUIPMENT_ID) REFERENCES ADD_EQUIPMENT(ID);

ALTER TABLE STATION_HAS_EQUIPMENT ADD CONSTRAINT FK_STATION_HAS_EQUIPMENT FOREIGN KEY (STATION_ID) REFERENCES STATIONS(ID);


/* Определения хранимых процедур */

set term ;

/* Процедура: GENERATE_ID */

/* Процедура генерации уникальных первичных ключей таблиц */

CREATE PROCEDURE GENERATE_ID(

TABLENAME VARCHAR(20)

)

RETURNS (

NEWID INTEGER

)

AS BEGIN EXIT; END


ALTER PROCEDURE GENERATE_ID(

TABLENAME VARCHAR(20)

)

RETURNS (

NEWID INTEGER

)

AS

begin

if (TableName='STATIONS') then NewID = gen_id(G_STATION_ID,1);

if (TableName='STATION_KINDS') then NewID = gen_id(G_STATION_KIND_ID,1);

if (TableName='OBJECTS') then NewID = gen_id(G_OBJECT_ID,1);

if (TableName='STREETS') then NewID = gen_id(G_STREET_ID,1);

if (TableName='STREET_KINDS') then NewID = gen_id(G_STREET_KIND_ID,1);

if (TableName='ACTION_KINDS') then NewID = gen_id(G_ACTION_KIND_ID,1);

if (TableName='SECTIONS') then NewID = gen_id(G_SECTIONS_ID,1);

suspend;

end



set term ;


/* Определения триггеров */

set term ;

CREATE TRIGGER ACTION_KINDS_BD FOR ACTION_KINDS

ACTIVE BEFORE DELETE POSITION 0

as

begin

delete from STATIONS_JOURNAL where ACTION_ID = old.ID;

end



CREATE TRIGGER ACTION_KINDS_BU FOR ACTION_KINDS

ACTIVE BEFORE UPDATE POSITION 0

as

begin

update STATIONS_JOURNAL

set ACTION_ID=new.ID

where ACTION_ID=old.ID;

end



CREATE TRIGGER CASCADE_BD FOR STATIONS

ACTIVE BEFORE DELETE POSITION 0

as

begin

/* Trigger Text */

delete from stations_journal

where STATION_ID = old.ID;

end



CREATE TRIGGER STATIONS_BI FOR STATIONS

ACTIVE BEFORE INSERT POSITION 0

as

begin

IF (NEW.ID=0) THEN

NEW.ID = GEN_ID(G_STATION_ID,1);

end



CREATE TRIGGER STATION_KINDS_BI FOR STATION_KINDS

ACTIVE BEFORE INSERT POSITION 0

as

begin

IF (NEW.ID IS NULL) THEN

NEW.ID = GEN_ID(G_STATION_ID,1);

end



CREATE TRIGGER STREETS_BI FOR STREETS

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.ID IS NULL) THEN

NEW.ID = GEN_ID(G_STREET_ID,1);

END



set term ;

приложение 6: список файлов в электронной версии отчета


Diplom.doc – текст отчета в формате MS Word 2000.

Present.ppt – презентация MS PowerPoint 2000.