рефераты бесплатно
Рефераты бесплатно, курсовые, дипломы, научные работы, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения,рефераты литература, рефераты биология, рефераты медицина, рефераты право, большая бибилиотека рефератов, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент и многое другое.
ENG
РУС
 
рефераты бесплатно
ВХОДрефераты бесплатно             Регистрация

Лабораторная работа: Проектування дволанкової розподіленої інформаційної системи для роботи з базами даних із використанням SQL Interbase  

Лабораторная работа: Проектування дволанкової розподіленої інформаційної системи для роботи з базами даних із використанням SQL Interbase

Проектування дволанкової розподіленої інформаційної системи для роботи з БД із використанням SQL Interbase

Мета:

•        створення БД;

•        створення використання індексів та переглядів БД;

•        створення використання тригерів, генераторів та збережених процедур на боці SQL-сервера;

•        отримання практичних навичок обміну даними між прикладенням і БД.

Завдання:

Засобами SQL Interbase необхідно створити БД, декілька індексованих таблиць БД (головну і підлеглі) декілька їх переглядів, а також зв’язати їх між собою.

Засобами С++Builder створити оригінальне(!) прикладення, яке повинне надавати мож-ливість:

•        перегляду записів зв’язаних таблиць БД, у тому числі попередніх і наступних записів та із використанням створених переглядів;

•        фільтрац записів БД із виведенням на екран записів, обраних у діалозі за вказаними критеріями;

•        інкрементального пошуку даних у БД за вказаними критеріями;

•        додавання видалення записи таблиці БД, у тому числі із використанням створених на боц SQL-сервера тригерів, генераторів та збережених процедур;

•        корегування полів поточного запису таблиці БД, у тому числі із використанням створе-ної на боці SQL-сервера збереженої процедури.

Вказівки до створення БД:

Для створення БД із використанням SQL Interbase необхідно:

•        завантажити на виконання прикладення InterBase Windows ISQL, яке за звичай зберігає-ться за маршрутом "<диск>:\Program Files\InterBase Corp\ InterBase\ Bin\wisql32.exe", наприклад, “E:\Program Files\InterBase Corp\ InterBase\ Bin\wisql32.exe";

•        виконати команду File | Create Database … і у віконці, яке з’явилося (мал. 1.1), вказати наведені параметри (параметри можуть бути довільними);

•        виконати команду Metadata | Show … і у віконці, яке з’явилося (мал. 1.2), у полі View Information On: обрати з меню альтернативу Database. Якщо БД було успішно створено, то у вікні InterBase Windows ISQL з’явиться відповідне повідомлення (мал. 1.3).

•        виконати команду File | Commit Work для збереження результатів роботи на диску;

•        далі (вже засобами С++ Builder) командою Database | Explore завантажити на виконання прикладення Database Explore, командою Object | New | INTRBASE створити аліас dbP, обрати його на вкладинці Databases і вказати параметри, які наведено на мал. 1.4; потім виконати команду Object | Apply для збереження зроблених змін;

•        у прикладенн InterBase Windows ISQL виконати команду File | Run an ISQL Script … і у вікні, що з’явилося (мал. 1.5), вказати ім’я файлу Createdb.sql, в якому набрано скрипт для створення таблиць БД;


 

Малюнок 1.1 Малюнок 1.2

Малюнок 1.3

Малюнок 1.4

 

Малюнок 1.5

Вміст цього файлу наведено нижче:

/* з’єднання з БД */

CONNECT "e:\Lr2\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";

/* створення таблиц PERS */

create table pers(

 Num smallint Not Null Primary Key,

 Dep char(15),

 Fam char(20) Not Null,

 Nam char(20) Not Null,

 Par char(20) Not Null,

 Year_b smallint,

 Sex char(1),

 Charact blob,

 Photo blob

);

/* створення таблиц DEP */

create table dep(

 Dep char(15) Not Null Primary Key,

 Proisv char(15)

);

/* заповнення таблиц PERS */

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(1, "Бухгалтерія", "Іванов", "Іван", "Іванович", 1950, "ч");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(2, "Цех 1", "Петров", "Петро", "Петрович", 1960, "ч");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(3, "Цех 2", "Сидоров", "Сидор", "Сидорович", 1955, "ч");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(4, "Цех 1", "Іванова", "Ірина", "Іванівна", 1971, "ж");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(5, "Бухгалтерія", "Миколаєв", "Микола", Миколайович", 1930, "ч”);

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(6, "Цех 2", "Андрієв", "Андрій", "Андрійович", 1930, "ч");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(7, "Цех 1", "Борисов", "Борис", "Борисович", 1937, "ч");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(8, "Цех 1", "Павлов", "Павло", "Павлович", 1975, "ч");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(9, "Бухгалтерія", "Антонова", "Антоніна", "Антонівна", 1965, "ж");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(10, "Цех 2", "Харитонов", "Харитон", "Харитонович", 1962, "ч");

Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)

 Values(11, "Цех 2", "Іванников", "Іван", "Іванович", 1975, "ч");

/* заповнення таблиц DEP */

Insert Into DEP( Dep,Proisv) Values("Бухгалтерія", "управління");

Insert Into DEP( Dep,Proisv) Values("Цех 1", "виробництво");

Insert Into DEP( Dep,Proisv) Values("Цех 2", "виробництво");

Commit;

Після натискання кнопки Открыть треба вказати, що результати виконання скрипту необхідно зберігати у файл Result.txt. Скрипт виконується.

Оглянути схему створеної таблиці (наприклад, таблиці PERS) можна командою Meta-data | Show … (мал. 1.6)

 Малюнок 1.6

SHOW TABLE PERS

NUM SMALLINT Not Null

DEP CHAR(15) Nullable

FAM CHAR(20) Not Null

NAM CHAR(20) Not Null

PAR CHAR(20) Not Null

YEAR_B SMALLINT Nullable

SEX CHAR(1) Nullable

CHARACT BLOB segment 80, subtype UNKNOWN Nullable

PHOTO BLOB segment 80, subtype UNKNOWN Nullable

CONSTRAINT INTEG_2:

 Primary key (NUM)

Оглянути вміст створено таблиц (наприклад, таблиц PERS) можна набором запиту Select * from PERS у вікн InterBase Windows ISQL, або ж за допомогою Database Explore (мал. 1.7):

 

Малюнок 1.7

•        створити ндекси таблиц PERS, для чого виконати скрипт, що міститься у файл CreateINDEXESdbP.sql:

/* З'єднання з БД */

CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";

/* Створення ндексів */

create index Person On PERS Fam,Nam,Par;

create index DepPerson On PERS Dep,Fam,Nam,Par;

create index Year On PERS Year_b;

•        створити перегляди таблиц PERS, для чого виконати скрипт, що міститься у файл CreateVIEWSdbP.sql:

/* З'єднання з БД */

CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";

/* Створення переглядів таблиці PERS за підрозділами */

Create VIEW dep_1 as

 select Dep, Num, Fam, Nam, Par, Year_b, Sex from Pers

 where Dep = "Бухгалтерія";

Create VIEW dep_2 as

 select Dep, Num, Fam, Nam, Par, Year_b, Sex from Pers

 where Dep = "Цех 1";

Create VIEW dep_3 as

 select Dep, Num, Fam, Nam, Par, Year_b, Sex from Pers

 where Dep = "Цех 2";

•        дал засобами С++ Builder командою Database | Explore завантажити на виконання прикладення Database Explore і з його допомогою створити генератор PERSGEN, як показано на мал. 1.8;

Малюнок 1.8

•        створити триггер PERSSWITCH таблиці PERS, для чого виконати скрипт, що місти-ться у файл CreateTRIGGERdbP.sql:

CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";

/* Створення триггера PERSSWITCH для збільшення номера запису під час вставки запису у таблицю */

SET TERM ^;

CREATE TRIGGER PERSSWITCH FOR PERS

 BEFORE INSERT AS

 BEGIN

 NEW.NUM = GEN_ID(PERSGEN, 1);

 END;^

SET TERM ;^

COMMIT;

•        створити на боц SQL-сервера виконуємі процедури вставки (INSERTdbP), видалення (DELETEdbP) та корегування (UPDATEdbP) таблиці PERS, для чого:

•        виконати скрипт, що міститься у файлі CreateProcINSERTdbP.sql:

CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";

/* Виконуєма процедура INSERTdbP. Додає дан про співробітника, верта номер запису */

SET TERM ^;

CREATE PROCEDURE INSERTdbP

 (

 pDEP CHAR(15),

 pFAM CHAR(20),

 pNAM CHAR(20),

 pPAR CHAR(20),

 pYEAR_B INTEGER,

 pSEX CHAR(1)

 )

AS

 BEGIN

 Insert into PERS (DEP, FAM, NAM, PAR, YEAR_B, SEX)

 VALUES (:pDEP, :pFAM, :pNAM, :pPAR, :pYEAR_B, :pSEX);

 END;^

SET TERM ;^

COMMIT;

•        виконати скрипт, що міститься у файл CreateProcDELETEdbP.sql:

CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";

/* Виконуєма процедура DELETEdbP знищення даних про співробітника */

SET TERM ^;

CREATE PROCEDURE DELETEdbP

 (

 pNUM INTEGER

 )

AS

 BEGIN

 DELETE FROM PERS WHERE NUM = :pNUM;

 END;^

SET TERM ;^

COMMIT;

•        виконати скрипт, що міститься у файлі CreateProcUPDATEdbP.sql:

CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";

/* Виконуєма процедура UPDATEdbP.

 Зміню дан про співробітника, верта номер запису чи 0, якщо співробітника нема */

SET TERM ^;

CREATE PROCEDURE UPDATEdbP

 (

 pDEP CHAR(15),

 pFAM CHAR(20),

 pNAM CHAR(20),

 pPAR CHAR(20),

 pYEAR_B INTEGER,

 pSEX CHAR(1)

 )

 RETURNS

 (number integer)

AS

 BEGIN

 number = 0;

 Select NUM From PERS

 Where (FAM = :pFAM) and (NAM = :pNAM) and (PAR = :pPAR)

 Into number;

 if (number > 0) then

 Update PERS Set DEP = :pDEP, YEAR_B = :pYEAR_B, SEX = :pSEX

 Where (FAM = :pFAM) and (NAM = :pNAM) and (PAR = :pPAR);

 END;^

SET TERM ;^

COMMIT;

У результаті виконання цих дій буде створено БД зі структурою, що наведено на мал. 1.10.

 

Малюнок 1.10

Вказівки до створення першого прикладення:

Для маніпулювання таблицями треба створити проект прикладення (мал. 1.11).

 Малюнок 1.11

Головну форму main_Form наведено на мал. 1.12 і мал. 1.13.

Малюнок 1.12

Малюнок 1.13

Текстовий опис форми main_Form:

object main_Form: Tmain_Form

 Left = 147

 Top = 103

 Width = 709

 Height = 460

 Caption = 'Лабораторна робота 2'

 Color = clBtnFace

 Font.Charset = DEFAULT_CHARSET

 Font.Color = clWindowText

 Font.Height = -11

 Font.Name = 'System'

 Font.Style = [fsBold]

 OldCreateOrder = True

 Position = poScreenCenter

 OnCreate = FormCreate

 PixelsPerInch = 96

 TextHeight = 16

 object PageControl: TPageControl

 Left = 421

 Top = 0

 Width = 280

 Height = 428

 ActivePage = find_TabSheet

 Align = alClient

 Font.Charset = RUSSIAN_CHARSET

 Font.Color = clWindowText

 Font.Height = -13

 Font.Name = 'Times New Roman'

 Font.Style = [fsBold, fsItalic]

 MultiLine = True

 ParentFont = False

 TabOrder = 0

 OnChange = PageControlChange

 object find_TabSheet: TTabSheet

 Caption = 'Відбір'

 object select_GroupBox: TGroupBox

 Left = 1

 Top = 5

 Width = 268

 Height = 212

 Caption = 'Відбір за ...'

 TabOrder = 7

 end

 object sex_RadioGroup: TRadioGroup

 Left = 8

 Top = 120

 Width = 257

 Height = 53

 Caption = ' статтю '

 Columns = 2

 ItemIndex = 0

 Items.Strings = (

 'чоловіча'

 'жіноча')

 TabOrder = 0

 OnClick = minage_CSpinEditChange

 end

 object speedfind_GroupBox: TGroupBox

 Left = 0

 Top = 224

 Width = 257

 Height = 169

 Caption = ' Швидкий пошук за прізвищем '

 TabOrder = 5

 object Image1: TImage

 Left = 8

 Top = 16

 Width = 105

 Height = 145

 Picture.Data = { }

 Stretch = True

 end

 object speedfind_Label: TLabel

 Left = 154

 Top = 42

 Width = 56

 Height = 16

 Caption = 'Прізвище'

 end

 object speedfind_Image: TImage

 Left = 32

 Top = 48

Страницы: 1, 2, 3, 4, 5, 6


© 2010.