Розробка інформаційної системи відомостей про вулиці м. Києва

 

Зміст


1. Опис предметного середовища та постановка задачі

. Концептуальна модель бази даних

. Даталогічна модель бази даних

. Словник даних

. Звязки між сутностями

. Функціональні залежності

. Опис реалізації проекту бази даних

Висновки

Список використаної літератури

Документація

Додатки


1.Опис предметного середовища та постановка задачі


Необхідно розробити інформаційну систему, яка дозволяла б виконувати перегляд відомостей про вулиці м. Києва, їх розташування, параметри та історію.

До головних задач, які повинна виконувати система, відносяться:

·Ведення обліку вулиць, тобто інформація про розташування, код, назву, тип, хронологію перейменувань вулиці.

·Ведення обліку обєктів, які розташовані на відповідних вулицях - номер, назва, тип, точні координати розташування.

Перелік вхідної інформації, що повинна зберігатися в БД

·Район: код району (унікальний), назва району.

·Вулиця: код вулиці (унікальний), назва вулиці, тип вулиці, коротка назва типу, кількість обєктів (споруди розташовані на даній вулиці), код району (унікальний).

·Хронологія: номер запису (унікальний), нова назва, дата створення, код вулиці (унікальний).

·Геометрія: координати вулиці (X, Y), код вулиці (унікальний).

·Обєкт: номер (унікальний), назва (якщо є, в іншому випадку взяти назву вулиці), тип обєкта, координати обєкта (Х, Y), код вулиці (унікальний).


2.Концептуальна модель БД


На етапі концептуального проектування визначаються основні типи даних, що підлягають збереженню у базі даних, виділяються обєкти (сутності) предметного середовища, визначаються характеристики (атрибути) обєктів, структурні звязки між обєктами, які дають можливість реалізувати усю множину запитів до БД.

Рисунок 1 - Концептуальна модель


3.Даталогічна модель БД


Фізична модель відображає розміщення даних, методи доступу до даних і техніку індексування, що будуть реалізовані в рамках обраної СУБД.

Нижче наведена структура таблиць та їх взаємозвязок у вигляді діаграми.


Рисунок 2 - Даталогічна модель


.Словник даних


Необхідно виділити основні сутності. Для сутностей визначити атрибути, що потрібно включити до складу інформаційної моделі.


Таблиця 1 - Атрибути інформаційної моделі

СутністьАтрибутиІдентифікаторКлючіТип данихРозмірРайонКод району Назва районуID_Part Name_PartPkЧисловий(і) Текстовий(А)ціле 50ВулицяКод вулиці Назва вулиці Тип Коротка назва типу Кількість обєктів Код районуID_St Name_St Type_St Type_Short Count_St ID_PartPk FkЧисловий(і) Текстовий(А) Текстовий(А) Текстовий(А) Числовий(і) Числовий(і)ціле 20 15 5 ціле цілеХронологіяНомер запису Нова назва Дата створення Код вулиціNum_H Name_New Date_Create ID_StPk FkЧисловий(і) Текстовий(А) Дата Числовий(і)ціле 20 Date цілеГеометріяX Y Код вулиціX_St Y_St ID_StFkЧисловий(і) Числовий(і) Числовий(і)ціле ціле цілеОбєктКод Назва Тип обєкта Номер X Y Код вулиціNum_Obj Name_Obj Type_Obj Nomer_Obj X_Obj Y_Obj ID_StPk FkЧисловий(і) Текстовий(А) Текстовий(А) Числовий(і) Числовий(і) Числовий(і) Числовий(і)ціле 20 10 ціле ціле ціле ціле

.Звязки між сутностями


Далі необхідно визначити звязки між сутностями, які включені до моделі.


Таблиця 2 - Звязки між сутностями

СутністьТип звязкуЗміст звязкуРайон Вулиця1:МВ одному районі знаходиться багато вулиць, вулиця входить до одного району.Вулиця Хронологія1:М Вулиця має багато історичних відомостей, історичні відомості притаманні окремій, одній вулиці. Вулиця Геометрія1:М Вулиця представляє собою складну геометричну фігуру з унікальними координатами, які відповідають тільки одній вулиці.Вулиця Обєкт1:МНа вулиці розташовано багато обєктів, обєкт розташований на відповідній вулиці.

.Функціональні залежності


Інформаційні обєкти:


Район (Part) - (ID_Part , Name_Part);

Вулиця(Street) - (ID_St, Name_St, Type_St, Type_Short, Count_St);

Обєкт(Object) - (Num_Obj, Name_Obj, Type_Obj, X_Obj, Y_Obj);

Хронологія(History) - (Num_H, Name_New, Date_Create);

Геометрія(Geometry) - (X_St, Y_St).


Аналіз даних дозволяє визначити наступі функціональні залежності:


ID_Part ® Name_Part_St ® Name_St, Type_St, Type_Short, Count_St, ID_Part_Obj ® Name_Obj, Type_Obj, X_Obj, Y_Obj, ID_St

Num_H ® Name_New, Date_Create, ID_St_St, Y_St ® ID_St


.Опис реалізації проекту бази даних


Oпис реалізації клієнтських застосувань

Створено два застосування з різними правами доступу у програмному середовищі Delphi.

Перше - для адміністратора , з можливістю редагування всіх таблиць БД;

Друге - для користувача GUEST, якому встановлено роль USER1, права тільки на читання даних з усіх таблиць БД.

Перше застосування призначено для додавання, редагування та видалення даних з усіх таблиць. Друге для перегляду списків таблиць БД.

Опис інтерфейсу розробленої системи, функціональне призначення основних опцій меню

Застосування для адміністратора


1)Головна форма:


Рисунок 3 - Головна форма застосування


)Запис нових вулиць та редагування:


Рисунок 4 - Додавання нового запису


)Перегляд історії перейменувань вулиць :

Рисунок 5 - Перегляд хронології перейменувань вулиць


Застосування для користувача з правами тільки на читання

1)Головна форма:

Рисунок 6 - Головна форма клієнтського застосування


a.Використані компоненти для звязку з сервером InterBase


Рисунок 7 - Компоненти для звязку read_committed з сервером rec_version


Для звязування з сервером використані компоненти вкладки InterBase:

Головний компонент TIBDataBase - TIBDB1 має параметри:


user_name=SYSDBA=masterkey_ctype=WIN1251


Для функціонування застосування використано компонент IBTransaction.

IBTR1 має параметри: read

інформаційний вулиця дані інтерфейс


Висновок


На основі отриманих навичок і знань під час виконання лабораторних і практичних робіт, в курсовій роботі, я розробив застосування, яке дозволяє виконувати такі основні дії з наборами даних, як:

·перегляд записів;

·внесення записів;

·редагування записів.


Використана література


1. Горев А., Акаян Р., Макашаринов С. Эффективная работа с СУБД - СГб.: Питер, 1997. - 704 с.

. Гайна Г.А. Методичні вказівки до виконання курсової роботи з дисципліни «Організація баз даних та знань». - КНУБА, 1999. - 34 с.

. Конспект лекцій з баз даних. - 96 с.


Додаток1


Метадані бази даних KIEV_STRET.GDB


SET SQL DIALECT 1;

/* CREATE DATABASE 'C:\Kiev_Street\KIEV_STREET.gdb' PAGE_SIZE 4096CHARACTER SET WIN1251 */

/* Domain definitions */DOMAIN DOM_20 AS VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL;DOMAIN DOM_FK AS INTEGER;DOMAIN DOM_PK AS INTEGER NOT NULL;DOMAIN DOM_STYPE AS VARCHAR(4) CHARACTER SET WIN1251(VALUE IN ('вул', 'прос', 'бул', 'пл', 'пров', 'узв'));DOMAIN DOM_TYPE AS VARCHAR(12) CHARACTER SET WIN1251(VALUE IN ('вулиця', 'проспект', бульвар', 'площа', 'провулок', 'узвіз'));

/* Table: GEOMETRY, Owner: SYSDBA */TABLE GEOMETRY

(_STFLOAT,_STFLOAT,_STDOM_FK

);

/* Table: HISTORY, Owner: SYSDBA */TABLE HISTORY

(_HDOM_PK,_NEWDOM_20,_CREATETIMESTAMP,_STDOM_FK,PK_H PRIMARY KEY (NUM_H)

);

/* Table: OBJECT, Owner: SYSDBA */TABLE OBJECT

(_OBJDOM_PK,_OBJDOM_20,_OBJDOM_20,_OBJVARCHAR(10) CHARACTER SET WIN1251,_OBJFLOAT,_OBJFLOAT,_STDOM_FK,PK_OBJ PRIMARY KEY (NUM_OBJ)

);

/* Table: PART, Owner: SYSDBA */TABLE PART

(_PARTDOM_PK,_PARTDOM_20,PK_PART PRIMARY KEY (ID_PART)

);

/* Table: STREET, Owner: SYSDBA */TABLE STREET

(_STDOM_PK,_STDOM_20,_STDOM_TYPE,_SHORTDOM_STYPE,_STINTEGER,_PARTDOM_FK,PK_ST PRIMARY KEY (ID_ST)

);

FROM STREET:SNAME, :STYPE, :SCOUNT;

^PROCEDURE PROC2

(INTEGER

)COUNT(NUM_OBJ)OBJECT:SCOUNT;

^PROCEDURE PROC3

(VARCHAR(20) CHARACTER SET WIN1251,TIMESTAMP,TIMESTAMP

)

(INTEGER

)=0;COUNT(H.NUM_H)HISTORY H INNER JOIN STREET S ON H.ID_ST=S.ID_STNAME_ST=:SNAME AND DATE_CREATE BETWEEN :SFROM AND :STO:SCOUNT;

^PROCEDURE PROC4

(VARCHAR(20) CHARACTER SET WIN1251

)

(FLOAT,FLOAT

)G.X_ST, G.Y_STGEOMETRY G INNER JOIN STREET S ON G.ID_ST=S.ID_STNAME_ST=:SNAME:SX, :SY;

^

SET TERM ; ^WORK;.ID_ST)(:I, NEW.NAME_ST, :D, NEW.ID_ST);

^TRIGGER TRHISTORY_UPD FOR STREET AFTER UPDATE POSITION 0VARIABLE D DATE;VARIABLE I INTEGER;=GEN_ID(GEN_H,0);='NOW';(NEW.NAME_ST<>OLD.NAME_ST) THENINTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW, HISTORY.DATE_CREATE, HISTORY.ID_ST)(:I, NEW.NAME_ST, :D, NEW.ID_ST);

^WORK ^TERM ;^

/* Grant Roles for this database */

/* Role: ADMINISTRATOR, Owner: SYSDBA */ROLE ADMINISTRATOR;ROLE USER1;

/* Grant permissions for this database */DELETE, INSERT, SELECT, UPDATE, REFERENCES ON GEOMETRY TO ADMINISTRATOR;SELECT ON GEOMETRY TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON HISTORY TO ADMINISTRATOR;SELECT ON HISTORY TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON OBJECT TO ADMINISTRATOR;SELECT ON OBJECT TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON PART TO ADMINISTRATOR;SELECT ON PART TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON STREET TO ADMINISTRATOR;SELECT ON STREET TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_HISTORY TO ADMINISTRATOR;SELECT ON V_HISTORY TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_OBJ TO ADMINISTRATOR;SELECT ON V_OBJ TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_PART TO ADMINISTRATOR;SELECT ON V_PART TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_PCOUNT TO ADMINISTRATOR;SELECT ON V_PCOUNT TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_ST TO ADMINISTRATOR;SELECT ON V_ST TO USER1;ADMINISTRATOR TO DENNIS;USER1 TO GUEST;EXECUTE ON PROCEDURE PROC1 TO ADMINISTRATOR;EXECUTE ON PROCEDURE PROC1 TO USER1;EXECUTE ON PROCEDURE PROC2 TO ADMINISTRATOR;EXECUTE ON PROCEDURE PROC2 TO USER1;EXECUTE ON PROCEDURE PROC3 TO ADMINISTRATOR;

/* View: V_HISTORY, Owner: SYSDBA */VIEW V_HISTORY (_H, _NEW, _CREATE, _ST

) ASH.NUM_H, H.NAME_NEW, H.DATE_CREATE, S.NAME_STHISTORY H, STREET SS.ID_ST=H.ID_ST

;WORK;AUTODDL OFF;TERM ^ ;

/* Stored procedures */PROCEDURE PROC1

(VARCHAR(20) CHARACTER SET WIN1251,VARCHAR(20) CHARACTER SET WIN1251,INTEGER

)EXIT; END ^PROCEDURE PROC2

(INTEGER

)EXIT; END ^PROCEDURE PROC3

(VARCHAR(20) CHARACTER SET WIN1251,TIMESTAMP,TIMESTAMP

)

(INTEGER

)EXIT; END ^PROCEDURE PROC4

(VARCHAR(20) CHARACTER SET WIN1251

)

(FLOAT,FLOAT

)EXIT; END ^


ALTER PROCEDURE PROC1

(VARCHAR(20) CHARACTER SET WIN1251,VARCHAR(20) CHARACTER SET WIN1251,INTEGER

)

ASNAME_ST, TYPE_ST, COUNT_ST

SET AUTODDL ON;TERM ^;

/* Triggers only will work for SQL triggers */TRIGGER ON_GENH FOR HISTORY BEFORE INSERT POSITION 0.NUM_H = GEN_ID(GEN_H,1);

^TRIGGER ON_GENOBJ FOR OBJECT BEFORE INSERT POSITION 0.NUM_OBJ = GEN_ID(GEN_OBJ,1);

^TRIGGER TRCOUNT FOR OBJECT AFTER INSERT POSITION 0STREETSTREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

^TRIGGER TRCOUNT_U FOR OBJECT AFTER UPDATE POSITION 0STREETSTREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

^TRIGGER TRCOUNT_D FOR OBJECT AFTER DELETE POSITION 0STREETSTREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

^TRIGGER ON_GENPART FOR PART BEFORE INSERT POSITION 0.ID_PART = GEN_ID(GEN_PART,1);

^TRIGGER ON_GENST FOR STREET BEFORE INSERT POSITION 0.ID_ST = GEN_ID(GEN_ST,1);

^TRIGGER TRHISTORY_INS FOR STREET AFTER INSERT POSITION 0VARIABLE D DATE;VARIABLE I INTEGER;=GEN_ID(GEN_H,0);='NOW';INTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW, HISTORY.DATE_CREATE,

GRANT EXECUTE ON PROCEDURE PROC3 TO USER1;EXECUTE ON PROCEDURE PROC4 TO ADMINISTRATOR;

GRANT EXECUTE ON PROCEDURE PROC4 TO USER1;


Додаток 2


Програмні модулі Delphi

Застосування для адміністратора

BD;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, Grids, DBGrids, Menus, ExtCtrls, StdCtrls, Buttons,, Mask;

…..…: TForm1;: integer;DataModule1, BD2;

{$R *.dfm}TForm1.N2Click(Sender: TObject);;;TForm1.FormCreate(Sender: TObject);.ActivePage:=TabSheet1;:=0;;TForm1.BitBtn4Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.PART.Insert;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.BitBtn17Click(Sender: TObject);DM1.IBTR1.InTransaction then.IBTR1.Commit;

//DM1.PART.Open;;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn19Click(Sender: TObject);(DBEdit3.Text <> '') AND (DBEdit4.Text <> '') AND (DBEdit4.Text <> '')(Combobox1.Text <> '') AND (DBLookupComboBox1.Text <> '') then.STREET.FieldByName('TYPE_ST').AsString:=combobox1.Text;

if combobox1.ItemIndex=0 then DM1.STREET.Fields[3].Value:='âóë'if combobox1.ItemIndex=1 then

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;;TForm1.BitBtn22Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn25Click(Sender: TObject);(DBEdit14.Text <> '') AND (DBEdit15.Text <> '') AND (DBEdit16.Text <> '')(DBLookupComboBox4.Text <> '') then.HISTORY.Post;

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;;TForm1.BitBtn24Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn1Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Insert;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.BitBtn5Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.PART.Edit;.PART.Cancel;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.BitBtn7Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.OBGECT.Insert;.Visible:=true;.Visible:=true;.Top:=446;.Visible:=true;.Top:=260;;TForm1.N9Click(Sender: TObject);.ActivePage:=TabSheet5;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.N10Click(Sender: TObject);:=1;.ShowModal;;TForm1.N11Click(Sender: TObject);:=2;.ShowModal;;TForm1.N12Click(Sender: TObject);:=3;.ShowModal;;TForm1.TabSheet: integer;:=n;;TForm1.N13Click(Sender: TObject);:=4;.ShowModal;;TForm1.N14Click(Sender: TObject);:=5;.ShowModal;;TForm1.BitBtn6Click(Sender: TObject);.PART.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.PART.Delete;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn2Click(Sender: TObject);DM1.IBTR1.InTransaction then.IBTR1.Commit;Exception do

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;.PART.Active:=false;.PART.Active:=true;TForm1.TabSheet4Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.TabSheet5Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn36Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Edit;.STREET.Cancel;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.BitBtn28Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn27Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn9Click(Sender: TObject);.OBGECT.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)

then beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.OBGECT.Delete;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn34Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn33Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.close;;.BD2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls;

…………: TForm2;: integer;BD, DataModule1;

{$R *.dfm}TForm2.FormActivate(Sender: TObject);(Form1.TabSheet=1) then.ActivePage:=TabSheet6;if (Form1.TabSheet=2) then PageControl1.ActivePage:=TabSheet7if (Form1.TabSheet=3) then PageControl1.ActivePage:=TabSheet8if (Form1.TabSheet=4) then PageControl1.ActivePage:=TabSheet1PageControl1.ActivePage:=TabSheet2;;TForm2.TabSheet7Show(Sender: TObject);.IBQ5.SQL.Clear;.IBQ5.SQL.Add('select * FROM proc1');.IBQ5.Open;.IBQ5.Active:=false;.IBQ5.Active:=true;.Refresh;.IBQ3.Active:=false;.IBQ3.Active:=true;.Refresh;1.Columns[0].Title.Caption:='Âóëèöÿ';.Columns[1].Title.Caption:='Òèï';.Columns[2].Title.Caption:='ʳëüê³ñòü áóä³âåëü';

end;TForm2.TabSheet8Show(Sender: TObject);.IBProc1.Prepare;.IBProc1.ExecProc;.Panels[1].Text:='Âñüîãî áóä³âåëü: ' + DM1.IBProc1.Parambyname('SCOUNT').AsString;

DM1.IBProc1.Cancel;.IBQ4.Active:=false;.IBQ4.Active:=true;.Refresh;;TForm2.Button1Click(Sender: TObject);(edit3.text <> '') and (edit2.text <> '') and (edit1.text <> '') then.IBProc2.ParamByName('SNAME').Value:=edit3.Text;.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;;TForm2.TabSheet6Show(Sender: TObject);.IBQ1.Active:=false;.IBQ1.Active:=true;.IBQ2.Active:=false;.IBQ2.Active:=true;.Refresh;.Refresh;;TForm2.TabSheet2Show(Sender: TObject);.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Columns[0].Title.Caption:='X';.Columns[1].Title.Caption:='Y';

DBGRID4.Columns[2].Title.Caption:='Âóëèöÿ';

end;.DataModule1;, Classes, IBDatabase, DB, IBCustomDataSet, IBTable, IBQuery,;= class(TDataModule): TIBDatabase;: TIBTable;: TIBTable;: TDataSource;: TDataSource;: TIBTransaction;: TIBTable;: TIBTable;: TIBTable;: TDataSource;: TDataSource;: TDataSource;: TIBQuery;: TIBQuery;: TIBQuery;: TDataSource;_H: TIntegerField;_NEW: TIBStringField;_CREATE: TDateTimeField;_ST: TIntegerField;_ST: TIntegerField;_ST: TIBStringField;_ST: TIBStringField;_SHORT: TIBStringField;_ST: TIntegerField;: TStringField;_PART: TIntegerField;_OBJ: TIntegerField;_OBJ: TIBStringField;_OBJ: TIBStringField;_OBJ: TIBStringField;_OBJ: TFloatField;_OBJ: TFloatField;_ST: TIntegerField;: TStringField;_ST: TFloatField;_ST: TFloatField; DM1.STREET.Fields[3].Value:='ïðîñ'if combobox1.ItemIndex=2 then DM1.STREET.Fields[3].Value:='ïë'

else if combobox1.ItemIndex=3 then DM1.STREET.Fields[3].Value:='áóë'

else if combobox1.ItemIndex=4 then DM1.STREET.Fields[3].Value:='óçâ'

else if combobox1.ItemIndex=5 then DM1.STREET.Fields[3].Value:='ïðîâ';.STREET.Post;.HISTORY.Active:=false;.HISTORY.Active:=true;

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.STREET.Active:=false;.STREET.Active:=true;.Refresh;;TForm1.BitBtn18Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn21Click(Sender: TObject);(DBEdit5.Text <> '') AND (DBEdit6.Text <> '') AND (DBEdit8.Text <> '')(DBEdit9.Text <> '') AND (DBEdit10.Text <> '') AND (DBEdit11.Text <> '')(DBLookupComboBox2.Text <> '') then.OBGECT.Post;.STREET.Active:=false;.STREET.Active:=true;

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;;TForm1.BitBtn20Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn23Click(Sender: TObject);(DBEdit12.Text <> '') AND (DBEdit13.Text <> '')(DBLookupComboBox3.Text <> '') then.GEOMETRY.Post;;TForm1.BitBtn8Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.OBGECT.Edit;.OBGECT.Cancel;.Visible:=true;.Visible:=true;.Top:=446;;TForm1.BitBtn10Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.GEOMETRY.Insert;.Visible:=true;.Visible:=true;.Top:=260;;TForm1.BitBtn11Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.GEOMETRY.Edit;.GEOMETRY.Cancel;.Visible:=true;.Visible:=true;.Top:=260;;TForm1.BitBtn13Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.HISTORY.Insert;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.BitBtn14Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.HISTORY.Edit;.HISTORY.Cancel;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.N5Click(Sender: TObject);.ActivePage:=TabSheet1;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.N6Click(Sender: TObject);.ActivePage:=TabSheet2;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.N7Click(Sender: TObject);.ActivePage:=TabSheet3;.Visible:=true;.Visible:=true;.Top:=446;;TForm1.N8Click(Sender: TObject);.ActivePage:=TabSheet4;.Visible:=true;.Refresh;.Visible:=false;;TForm1.BitBtn26Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn16Click(Sender: TObject);(DBEdit1.Text <> '') AND (DBEdit2.Text <> '') then.PART.Post;

on Exception do showmessage('Íåêîðêòíî çàïîâíåí³ ïîëÿ!');;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.PART.Active:=false;.PART.Active:=true;.Refresh;;TForm1.BitBtn3Click(Sender: TObject);.STREET.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Delete;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.TabSheet1Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;.Visible:=true;.Top:=230;;TForm1.TabSheet2Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.TabSheet3Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn12Click(Sender: TObject);.GEOMETRY.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)

then beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.GEOMETRY.Delete;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn30Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn29Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn15Click(Sender: TObject);.HISTORY.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.HISTORY.Delete;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn32Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn31Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn35Click(Sender: TObject);.IBProc2.ParamByName('SFROM').Value:=edit2.Text;.IBProc2.ParamByName('STO').Value:=edit1.Text;.IBProc2.Prepare;.IBProc2.ExecProc;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;

StatusBar2.Panels[1].Text:='Çíàéäåíî: ' + DM1.IBProc2.Parambyname('SCOUNT').AsString;.IBProc2.Cancel;.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY where NAME_ST=:NEW');not DM1.IBQ7.prepared then DM1.IBQ7.prepare;.IBQ7.ParamByName('NEW').AsString:=edit3.Text;.IBQ7.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;.Clear;.Clear;.Clear;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

end;TForm2.TabSheet1Show(Sender: TObject);.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;

DBGRID2.Columns[0].Title.Caption:='Íîìåð çàïèñó';.Columns[1].Title.Caption:='Íîâà íàçâà';.Columns[2].Title.Caption:='Äàòà ñòâîðåííÿ';

DBGRID2.Columns[3].Title.Caption:='Ïîòî÷íà íàçâà';

end;TForm2.Button3Click(Sender: TObject);(edit9.text <> '') then.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select * from PROC4(:NEW)');.IBQ6.ParamByName('NEW').AsString:=edit9.Text;.IBQ6.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ');.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Clear;

else showmessage('Ââåä³òü äàí³');

end;TForm2.Button2Click(Sender: TObject);.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select G.X_ST, G.Y_ST, S.NAME_ST from STREET S, GEOMETRY G where S.ID_ST=G.ID_ST');.IBQ6.Open;.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;;TForm2.Button4Click(Sender: TObject);.Panels[1].Text:='';.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');_ST: TIntegerField;: TStringField;: TStringField;_PART: TIntegerField;_PART: TIBStringField;: TDataSource;: TDataSource;: TIBStoredProc;: TIBStoredProc;: TIBQuery;: TIBQuery;: TIBQuery;: TDataSource;: TDataSource;: TDataSource;: TDataSource;: TIBQuery;IBDB1AfterConnect(Sender: TObject);

{ Private declarations }

{ Public declarations };: TDM1;

{$R *.dfm}.


Застосування для користувача з правами тільки на читання даних


unit BD;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, Grids, DBGrids, Menus, ExtCtrls, StdCtrls, Buttons,, Mask;

……………: TForm1;: integer;DataModule1, BD2;

{$R *.dfm}TForm1.N2Click(Sender: TObject);;;TForm1.FormCreate(Sender: TObject);.ActivePage:=TabSheet1;:=0;.Align:=AlRight;;TForm1.N10Click(Sender: TObject);:=1;.ShowModal;;TForm1.N11Click(Sender: TObject);:=2;.ShowModal;;TForm1.N12Click(Sender: TObject);:=3;.ShowModal;;TForm1.TabSheet: integer;:=n;;TForm1.N13Click(Sender: TObject);:=4;.ShowModal;;TForm1.N14Click(Sender: TObject);:=5;.ShowModal;;TForm1.BitBtn35Click(Sender: TObject);.close;;..IBProc2.ExecProc;ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;

StatusBar2.Panels[1].Text:='Çíàéäåíî: ' + DM1.IBProc2.Parambyname('SCOUNT').AsString;.IBProc2.Cancel;.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY where NAME_ST=:NEW');not DM1.IBQ7.prepared then DM1.IBQ7.prepare;.IBQ7.ParamByName('NEW').AsString:=edit3.Text;.IBQ7.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;.Clear;.Clear;.Clear;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

end;TForm2.TabSheet1Show(Sender: TObject);.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;D2.Columns[0].Title.Caption:='Íîìåð çàïèñó';.Columns[1].Title.Caption:='Íîâà íàçâà';.Columns[2].Title.Caption:='Äàòà ñòâîðåííÿ';.Columns[3].Title.Caption:='Ïîòî÷íà íàçâà';

end;TForm2.Button3Click(Sender: TObject);(edit9.text <> '') then.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select * from PROC4(:NEW)');.IBQ6.ParamByName('NEW').AsString:=edit9.Text;.IBQ6.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ');.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Clear;

else showmessage('Ââåä³òü äàí³');

end;TForm2.Button2Click(Sender: TObject);.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select G.X_ST, G.Y_ST, S.NAME_ST from STREET S, GEOMETRY G where S.ID_ST=G.ID_ST');.IBQ6.Open;.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;;BD2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls;

…………..: TForm2;: integer;BD, DataModule1;

{$R *.dfm}TForm2.FormActivate(Sender: TObject);(Form1.TabSheet=1) then.ActivePage:=TabSheet6;if (Form1.TabSheet=2) then PageControl1.ActivePage:=TabSheet7if (Form1.TabSheet=3) then PageControl1.ActivePage:=TabSheet8if (Form1.TabSheet=4) then PageControl1.ActivePage:=TabSheet1PageControl1.ActivePage:=TabSheet2;;TForm2.TabSheet7Show(Sender: TObject);.IBQ5.SQL.Clear;.IBQ5.SQL.Add('select * FROM proc1');.IBQ5.Open;.IBQ5.Active:=false;.IBQ5.Active:=true;.Refresh;.IBQ3.Active:=false;.IBQ3.Active:=true;.Refresh;.Columns[0].Title.Caption:='Âóëèöÿ';.Columns[1].Title.Caption:='Òèï';.Columns[2].Title.Caption:='ʳëüê³ñòü áóä³âåëü';

end;TForm2.TabSheet8Show(Sender: TObject);.IBProc1.Prepare;.IBProc1.ExecProc;

StatusBar9.Panels[1].Text:='Âñüîãî áóä³âåëü: ' + DM1.IBProc1.Parambyname('SCOUNT').AsString;

DM1.IBProc1.Cancel;.IBQ4.Active:=false;.IBQ4.Active:=true;.Refresh;;TForm2.Button1Click(Sender: TObject);(edit3.text <> '') and (edit2.text <> '') and (edit1.text <> '') then.IBProc2.ParamByName('SNAME').Value:=edit3.Text;.IBProc2.ParamByName('SFROM').Value:=edit2.Text;.IBProc2.ParamByName('STO').Value:=edit1.Text;.IBProc2.Prepare;TForm2.Button4Click(Sender: TObject);.Panels[1].Text:='';.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;;TForm2.TabSheet6Show(Sender: TObject);.IBQ1.Active:=false;.IBQ1.Active:=true;.IBQ2.Active:=false;.IBQ2.Active:=true;.Refresh;.Refresh;;TForm2.TabSheet2Show(Sender: TObject);.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Columns[0].Title.Caption:='X';.Columns[1].Title.Caption:='Y';

DBGRID4.Columns[2].Title.Caption:='Âóëèöÿ';

end;

end


Зміст 1. Опис предметного середовища та постановка задачі . Концептуальна модель бази даних . Даталогічна модель бази даних . Словник даних .

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ