Афанасьев Павел Александрович Разработка электронного справочник
Вид материала | Справочник |
Содержаниеприложение 3: список файлов Приложение 4: реляционная схема БД приложение 5: SQL-описание базы данных |
- Виктор Александрович Афанасьев © Евгений Сергеевич Романов © Александр Алексеевич Никишов, 592.86kb.
- Вадим Александрович Чернобров, Александр Борисович Петухов, Иван Анатольевич Соболев:, 3271.24kb.
- Вадим Александрович Чернобров, Александр Борисович Петухов, Иван Анатольевич Соболев, 3270.03kb.
- Дмитрий Сергеевич Лихачёв, Борис Александрович Рыбаков, Алексей Александрович Шахматов., 279.29kb.
- Афанасьев Андрей Александрович исследование, 1325.47kb.
- Планы семинарских занятий по дисциплине «экономика зарубежных стран», 95.91kb.
- Орская навигация, 48.92kb.
- Заочной формы обучения, 10.66kb.
- Исследование и прогнозирование рынков, 7.92kb.
- Кокарев Павел Александрович, 62.06kb.
приложение 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.