
- •«Курский государственный университет»
- •Курсовая работа
- •1. Техническое задание 2
- •2. Модель предметной области в виде системы функциональных зависимостей 12
- •5. Построение запросов на языке sql 32
- •1.1.2. Объекты предметной области
- •1.1.3. Процессы взаимодействия между объектами, происходящие в предметной области
- •Формализованное описание предметной области
- •1.2.1. Словарь терминов для объектов и элементов данных
- •1.2.2. Первичные и альтернативные ключи
- •2.1.2. Не ключевые функциональные зависимости
- •2.1.3. Функциональные зависимости для сохранения иерархии
- •2.1.4.Функциональные зависимости для устранения потери информации при соединении
- •2.1.5. Исходное множество функциональных зависимостей
- •Неизбыточное редуцированное покрытие системы функциональных зависимостей
- •Построение неизбытычного покрытия
- •3.2. Построениелеворедуцированногопокрытия
- •3.3. Построениеправоредуцированногопокрытия
- •Минимальное кольцевое редуцированное покрытие системы функциональных зависимостей
- •4.1 Естественноехарактеристическоемножество:
- •5.1.1. Выражение для запроса с использованием операций реляционной алгебры
- •5.1.3. Исходный запрос на языке sql
- •5.1.4. Временные характеристики исходного запроса
- •5.1.5. Оптимизированное операционное дерево для запроса
- •5.1.6. Оптимизированный запрос на языке sql
- •5.1.7. Временные характеристики оптимизированного запроса
- •5.2. Многотабличный запрос на выборку по условию нескольких строк и логической формулы условий столбцов с использованием "or"
- •5.2.1. Выражение для запроса с использованием операций реляционной алгебры
- •5.2.2. Исходное операционное дерево для запроса
- •5.2.3. Исходный запрос на языке sql
- •Приложение 1
5.2.1. Выражение для запроса с использованием операций реляционной алгебры
Выражение для запроса с использование операций реляционной алгебры представлено на рисунке 5.7.
Рисунок 5.7
В
X
= Obj.Код,
Obj.цена,
Inv.наименование,Pom.№_помещения,
Pom.площадь_помещения;
Рисунок 5.8
f Obj.Цена < ( 92000 );
OR (Inv.Фирма = (Московский СпортИнвентарь);
OR (Pom.Номер= "47" )
Рисунок 5.9
5.2.2. Исходное операционное дерево для запроса
Исходное операционное дерево для запроса представлено на рисунке 5.10.
Рисунок 5.10
5.2.3. Исходный запрос на языке sql
Текст исходного запроса на SQL представлен на рисунке 5.11.
SELECT ARRIVAL_OBJ.code_object, ARRIVAL_OBJ.price, INVENTAR.naimenovanie, POMESHENIE.num_p, POMESHENIE.square
FROM (((ARRIVAL_OBJ INNER JOIN INVNUM_INV ON ARRIVAL_OBJ.code_object = INVNUM_INV.code_object) INNER JOIN INVENTAR ON (INVENTAR.code_object = INVNUM_INV.code_object) AND (ARRIVAL_OBJ.code_object = INVENTAR.code_object)) INNER JOIN (INV_IN_ZAL INNER JOIN POMESHENIE ON INV_IN_ZAL.num_p = POMESHENIE.num_p) ON INVNUM_INV.inv_number = INV_IN_ZAL.inv_number) INNER JOIN ZAL ON (ZAL.num_p = INV_IN_ZAL.num_p) AND (POMESHENIE.num_p = ZAL.num_p)
WHERE (((POMESHENIE.num_p)=47)) OR (((ARRIVAL_OBJ.price)<92000)) OR (((INVENTAR.firm)="Московский СпортИнвертарь"));
Рисунок 5.11
ЗАКЛЮЧЕНИЕ
Целью данного курсового проекта является изучение способов оптимизации базы данных, а так же запросов используемых в этой базе данных.
При оптимизации запросов необходимо используя исходное операционное дерево данного запроса вычислить время его выполнения и если возможно, то оптимизировать запрос и просчитать время выполнения уже оптимизированного запроса. Оптимизированный запрос должен быстрее выполняться, чем исходный неоптимизированный запрос. Оптимизация запроса достигается путем уменьшения количества данных, необходимых для обработки.
Время
выполнения запроса №1 составило
T(R)=16690.
После оптимизации время выполнения
запроса сократилось до T(R=3930).
Отношение времени выполнения исходногои
оптимизированного запросов равно
.
При
практическом измерении отношение
времени выполнения исходного запроса
к оптимизированному составило
. Расхождение
практического времени выполнения и
рассчитанного вызвано неточными
измерениями на практике.
Приложение 1
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB,
Vcl.Grids, Vcl.DBGrids;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
Button2: TButton;
Button3: TButton;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
Label1: TLabel;
Label2: TLabel;
ADOQuery3: TADOQuery;
ADOQuery4: TADOQuery;
DataSource3: TDataSource;
DataSource4: TDataSource;
DBGrid3: TDBGrid;
DBGrid4: TDBGrid;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
ADOTable2: TADOTable;
ADOTable3: TADOTable;
ADOTable4: TADOTable;
ADOQuery5: TADOQuery;
DataSource5: TDataSource;
ADOTable5: TADOTable;
ADOQuery6: TADOQuery;
ADOQuery7: TADOQuery;
DataSource6: TDataSource;
DataSource7: TDataSource;
ADOTable6: TADOTable;
ADOTable7: TADOTable;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
DBGrid5: TDBGrid;
DBGrid6: TDBGrid;
DBGrid7: TDBGrid;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Button4: TButton;
Button5: TButton;
Label12: TLabel;
Edit1: TEdit;
Button6: TButton;
Label13: TLabel;
Label14: TLabel;
ADOQuery8: TADOQuery;
ADOQuery9: TADOQuery;
ADOQuery10: TADOQuery;
DataSource8: TDataSource;
DataSource9: TDataSource;
DataSource10: TDataSource;
DBGrid8: TDBGrid;
DBGrid9: TDBGrid;
DBGrid10: TDBGrid;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Button7: TButton;
Label18: TLabel;
Button8: TButton;
ADOTable8: TADOTable;
ADOTable9: TADOTable;
ADOTable10: TADOTable;
Label19: TLabel;
Label20: TLabel;
DBGrid11: TDBGrid;
ADOQuery11: TADOQuery;
DataSource11: TDataSource;
Button9: TButton;
Button10: TButton;
Button11: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Z1, Z2 : longint;
num, code_obj, case_inv, INV_ID : integer; // num - номер помещения
s1, s : string;
inv_num_tec, inv_num_meb, inv_num_invent, all_count : longint;
mas1, mas2 : array of integer;
naimenovanie,ddate: string;
implementation
{$R *.dfm}
procedure FileWr;
var
f : Textfile;
//name : string;
begin
AssignFile (f, 'ids.txt'); //открыли файл
Rewrite (f) ;
WriteLn(f, inttostr(code_obj));
WriteLn(f, inttostr(inv_num_tec));
WriteLn(f, inttostr(inv_num_meb));
WriteLn(f, inttostr(inv_num_invent));
CloseFile (f);
end;
////////////////////////////
procedure TabPerson;
var
s,s1:string;
surname, pass, rost, ves, nomer : string;
passport, flat : integer;
i, n : integer;
List:TStringlist;
begin
{List:=TStringlist.Create;
passport := 999999999;
for i := 0 to 9 do
begin
//Паспорт
inc(passport);
flat := 1 + random (199);
//Фамилия
List.LoadFromFile('C:\docs\RAD Studio\Projects\TOBD\surname100.txt');
n := random (List.Count - 1);
surname := List[n];
//Номер
n := random (98) +1 ;
pass:= inttostr(passport);
ves := inttostr(0);
rost := inttostr(0);
nomer := inttostr (n);
//s:='insert into [Person] values ('+ inttostr(passport)+ ',"' +surname+'","' +surname+'","' +surname+'","' +surname+'","' +surname+'","' +surname+'","' +surname+'","' +surname+'",'+ inttostr(flat)+ ')';
//s1:='select * FROM [Person]' ;
s:='insert into [Player] values ('+ pass+ ',"' +rost+'","'+ves+ '","'+''+'","'+''+'","'+nomer+'")';
s1:='select * FROM [Player]' ;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s) ;
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s1) ;
ADOQuery1.Active:=True;
end; }
end;
procedure tabINV_ID;
var
i : integer;
begin
inc (inv_id);
all_count := all_count + 4;
if naimenovanie = 'Тренажер' then
begin
i := random (length (mas2) - 1);
num := mas2[i]
end
else
begin
i := random (length (mas1) - 1);
num := mas1[i]
end;
s:='insert into [INV_IN_ZAL] values ('+ inttostr(inv_id)+ ',"'+ ddate+'","'+ inttostr(num)+ '",'+inttostr(inv_num_invent)+')';
s1:='select * FROM [INV_IN_ZAL]' ;
with Form1 do
begin
ADOQuery10.SQL.Clear;
ADOQuery10.SQL.Add(s) ;
ADOQuery10.ExecSQL;
ADOQuery10.SQL.Clear;
ADOQuery10.SQL.Add(s1) ;
// ADOQuery5.Active:=True;
end;
end;
/////////////////////////////
procedure TabINVENUM;
begin
all_count := all_count + 2;
case case_inv of
0:
begin
s:='insert into [INVNUM_TEC] values ('+ inttostr(inv_num_tec)+ ','+inttostr(code_obj)+')';
s1:='select * FROM [INVNUM_TEC]' ;
with Form1 do
begin
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add(s) ;
ADOQuery5.ExecSQL;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add(s1) ;
// ADOQuery5.Active:=True;
end;
end;
1: begin
s:='insert into [INVNUM_MEB] values ('+ inttostr(inv_num_meb)+ ','+inttostr(code_obj)+')';
s1:='select * FROM [INVNUM_MEB]' ;
with Form1 do
begin
ADOQuery6.SQL.Clear;
ADOQuery6.SQL.Add(s) ;
ADOQuery6.ExecSQL;
ADOQuery6.SQL.Clear;
ADOQuery6.SQL.Add(s1) ;
// ADOQuery6.Active:=True;
end;
end;
2: begin
s:='insert into [INVNUM_INV] values ('+ inttostr(inv_num_invent)+ ','+inttostr(code_obj)+')';
s1:='select * FROM [INVNUM_INV]' ;
with Form1 do
begin
ADOQuery7.SQL.Clear;
ADOQuery7.SQL.Add(s) ;
ADOQuery7.ExecSQL;
ADOQuery7.SQL.Clear;
ADOQuery7.SQL.Add(s1) ;
// ADOQuery7.Active:=True;
end;
tabINV_ID;
end;
end;
end;
/////////////////////////////
procedure TabTECHNO;
var
i : longint;
t : integer;
naimenovanie, firm, model : string;
begin
all_count := all_count + 4;
inc(inv_num_tec);
t := random (3); //Наименование
case t of
0: naimenovanie := 'Телевизор';
1: naimenovanie := 'Фен';
2: naimenovanie := 'Стиральная машинка';
end;
t := random (3); //Фирма
case t of
0: firm := 'Panasonic';
1: firm := 'Samsung';
2: firm := 'LG';
end;
t := random (3); //Модель
case t of
0: model := 'AEJDL82732K';
1: model := 'SDM29FN3SAD';
2: model := 'FSDFKASD83Y';
end;
s:='insert into [TECHNO] values ('+ inttostr(code_obj)+ ',"'+ naimenovanie+'","'+firm+ '","'+model+'")';
s1:='select * FROM [TECHNO]' ;
with Form1 do
begin
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(s) ;
ADOQuery2.ExecSQL;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(s1) ;
// ADOQuery2.Active:=True;
// ADOTable2.Active := true;
// DBGrid2.Refresh;
end;
case_inv := 0;
TabINVENUM;
end;
/////////////////////////////
procedure TabMEBEL;
var
//inv_i : longint;
length, width, height, t : integer;
naimenovanie, firm : string;
begin
all_count := all_count + 6;
inc(inv_num_meb);
t := random (4); //Наименование
case t of
0: naimenovanie := 'Диван';
1: naimenovanie := 'Кровать';
2: naimenovanie := 'Стул';
3: naimenovanie := 'Стол';
end;
t := random (3); //Фирма
case t of
0: firm := 'ЯрМебель';
1: firm := 'Курский мебельный завод';
2: firm := 'Славянушка';
end;
length := (10 + random (10)) * 10; //Длина
width := (5 + random (8)) * 10; //Ширина
height := (5 + random (8)) * 10; //Высота
s:='insert into [MEBEL] values ('+ inttostr(code_obj)+ ',"'+ naimenovanie+'","'+firm+ '",'+ inttostr(length)+','+ inttostr(width)+','+ inttostr(height)+')';
s1:='select * FROM [MEBEL]' ;
with Form1 do
begin
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add(s) ;
ADOQuery3.ExecSQL;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add(s1) ;
// ADOQuery3.Active:=True;
end;
case_inv := 1;
TabINVENUM;
end;
/////////////////////////////
procedure TabINVENTAR;
var
//inv_i, i : longint;
t : integer;
firm, model : string;
begin
all_count := all_count + 4;
inc(inv_num_INVENT);
t := random (4); //Наименование
case t of
0: naimenovanie := 'Мяч';
1: naimenovanie := 'Тренажер';
2: naimenovanie := 'Бутцы';
3: naimenovanie := 'Форма';
end ;
t := random (3); //Фирма
case t of
0: firm := 'Select';
1: firm := 'Hummer';
2: firm := 'Московский СпортИнвентарь';
end;
t := random (3); //Модель
case t of
0: model := 'ASDLAKSD3J3';
1: model := 'ASD312D1DAD';
2: model := 'IJUQWEE2NGY';
end;
s:='insert into [INVENTAR] values ('+ inttostr(code_obj)+ ',"'+ naimenovanie+'","'+firm+ '","'+model+'")';
s1:='select * FROM [INVENTAR]' ;
with Form1 do
begin
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add(s) ;
ADOQuery4.ExecSQL;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add(s1) ;
// ADOQuery4.Active:=True;
end;
case_inv := 2;
TabINVENUM;
end;
/////////////////////////////
procedure TecMebInvCASE;
var
//inv_i : longint;
t : integer;
begin
begin
t := random (3);
case t of
0: TabTECHNO;
1: TabMEBEL;
2: TabINVENTAR;
end;
end;
end;
procedure TabArrival_Obj;
var
i : longint;
kol, price, ddate_temp : integer;
List:TStringlist;
begin
all_count := all_count + 3;
// code_obj := 19667;
// for i := Z1 to Z2 do
while all_count < 1001000 do
begin
inc (code_obj);
//Form1.label8.Caption := inttostr(code_obj);
// kol := 1 + random (10);
//
ddate_temp:= 1 + random (29);
ddate := inttostr (ddate_temp)+'.'; //число
if ddate_temp < 29 then ddate_temp := 1+random (11)
else
begin
ddate_temp := 1+random (11);
if ddate_temp = 2 then inc(ddate_temp);
end;
ddate := ddate + inttostr (ddate_temp)+'.'; // месяц
ddate_temp := 1999 + random (14);
ddate := ddate + inttostr (ddate_temp);
//
price := (10 + random (90)) * 1000;
//
s:='insert into [ARRIVAL_OBJ] values ('+ inttostr(code_obj)+ ',"'+ddate+ '","'+inttostr(price)+'")';
s1:='select * FROM [ARRIVAL_OBJ]' ;
with Form1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s) ;
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s1) ;
// ADOQuery1.Active:=True;
end;
TecMebInvCASE;
end;
end;
////////////////////////////
procedure RefreshTabs;
begin
Form1.DBGrid1.Refresh;
Form1.DBGrid2.Refresh;
// Form1.DBGrid3.Refresh;
// Form1.DBGrid4.Refresh;
// Form1.ADOTable1.Active := False;
// Form1.ADOTable1.Active := True;
// Form1.DBGrid1.DataSource := DataSource1;
end;
procedure TForm1.Button10Click(Sender: TObject);
var
sss1, sss2, sss3 : string;
t1,t2 : TDateTime;
Hr,min,sec,msec : Word;
begin
sss1:= 'SELECT price.code_object, price.price, firm.naimenovanie, square.num_p, square.square FROM (ZAL INNER JOIN square ON ZAL.num_p = square.num_p) INNER JOIN (((price INNER JOIN firm ON ';
sss2:= 'price.code_object = firm.code_object) INNER JOIN INVNUM_INV ON firm.code_object = INVNUM_INV.code_object) INNER JOIN INV_IN_ZAL ON INVNUM_INV.inv_number = INV_IN_ZAL.inv_number) ON ZAL.num_p = INV_IN_ZAL.num_p;';
//sss3:= ' ON ZAL.num_p = INV_IN_ZAL.num_p) ON (INV_IN_ZAL.num_p = POMESHENIE.num_p) AND (POMESHENIE.num_p = ZAL.num_p) WHERE (((ARRIVAL_OBJ.price)>92000) AND ((POMESHENIE.square)<47) AND ((INVENTAR.firm)="Московский СпортИнвентарь"));';
t1 := time;
ADOQuery11.SQL.Text := sss1+sss2;
// ADOQuerry11.sql
// label20.Caption := 'DecodeTime: ' +inttostr (msec);
// label20.Caption := 'GetTickCount: ' + inttostr ();
t2 := time;
DecodeTime (T2-T1,Hr,min,sec,msec);
label20.Caption := 'DecodeTime: '+inttostr (msec);
ADOQuery11.Active := True;
end;
procedure TForm1.Button11Click(Sender: TObject);
var
sss1, sss2, sss3 : string;
t1,t2 : TDateTime;
Hr,min,sec,msec : Word;
begin
sss1:= 'SELECT ARRIVAL_OBJ.code_object, ARRIVAL_OBJ.price, INVENTAR.naimenovanie,POMESHENIE.num_p, POMESHENIE.square FROM (((select * from ARRIVAL_OBJ where ((ARRIVAL_OBJ.price)>92000) ) as O) INNER JOIN ((select * from INVENTAR where';
sss2:= ' ((INVENTAR.firm)="Московский СпортИнвентарь")) as I) ON O.code_object = I.code_object) INNER JOIN ((ZAL INNER JOIN (INVNUM_INV INNER JOIN INV_IN_ZAL ON INVNUM_INV.inv_number = INV_IN_ZAL.inv_number) ON ZAL';
sss3:= '.num_p = INV_IN_ZAL.num_p) INNER JOIN ((select * from POMESHENIE where ((POMESHENIE.square)<47)) as S) ON ZAL.num_p = S.num_p) ON I.code_object = INVNUM_INV.code_object;';
t1 := time;
ADOQuery11.SQL.Text := sss1+sss2+sss3;
// ADOQuerry11.sql
// label20.Caption := 'DecodeTime: ' +inttostr (msec);
// label20.Caption := 'GetTickCount: ' + inttostr ();
ADOQuery11.Active := True;
t2 := time;
DecodeTime (T2-T1,Hr,min,sec,msec);
label20.Caption := 'DecodeTime: '+inttostr (msec);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RefreshTabs;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//table := ADOTable1.TableName;
ADOQuery10.SQL.Text:= 'DELETE * FROM ' + ADOTable10.TableName;
ADOQuery10.ExecSQL;
ADOQuery9.SQL.Text:= 'DELETE * FROM ' + ADOTable9.TableName;
ADOQuery9.ExecSQL;
ADOQuery8.SQL.Text:= 'DELETE * FROM ' + ADOTable8.TableName;
ADOQuery8.ExecSQL;
ADOQuery7.SQL.Text:= 'DELETE * FROM ' + ADOTable7.TableName;
ADOQuery7.ExecSQL;
ADOQuery6.SQL.Text:= 'DELETE * FROM ' + ADOTable6.TableName;
ADOQuery6.ExecSQL;
ADOQuery5.SQL.Text:= 'DELETE * FROM ' + ADOTable5.TableName;
ADOQuery5.ExecSQL;
ADOQuery4.SQL.Text:= 'DELETE * FROM ' + ADOTable4.TableName;
ADOQuery4.ExecSQL;
ADOQuery3.SQL.Text:= 'DELETE * FROM ' + ADOTable3.TableName;
ADOQuery3.ExecSQL;
ADOQuery2.SQL.Text:= 'DELETE * FROM ' + ADOTable2.TableName;
ADOQuery2.ExecSQL;
ADOQuery1.SQL.Text:= 'DELETE * FROM ' + ADOTable1.TableName;
ADOQuery1.ExecSQL;
inv_id := 0;
all_count := 0;
code_obj := 0;
inv_num_tec := 999999;
inv_num_meb := 999999;
inv_num_invent := 999999;
FileWr;
// ADOQuery2.Active := True;
// Form1.DBGrid1.Refresh;
// Form1.DBGrid2.Refresh;
{ ADOQuery3.SQL.Text:= 'DELETE * FROM ' + ADOTable3.TableName;
ADOQuery3.ExecSQL;
ADOQuery4.SQL.Text:= 'DELETE * FROM ' + ADOTable4.TableName;
ADOQuery4.ExecSQL; }
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
TabArrival_Obj;
Form1.label8.Caption := inttostr(code_obj);
label9.Caption := 'invnum_tec: ' + inttostr(inv_num_tec);
label10.Caption := 'invnum_meb: ' + inttostr(inv_num_meb);
label11.Caption := 'invnum_invent: ' + inttostr(inv_num_invent);
label19.Caption := 'all_count: ' + inttostr(all_count);
//RefreshTabs;
FileWr;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ADOQuery1.Active := true;
ADOQuery2.Active := true;
ADOQuery3.Active := true;
ADOQuery4.Active := true;
ADOQuery5.Active := true;
ADOQuery6.Active := true;
ADOQuery7.Active := true;
ADOQuery8.Active := true;
ADOQuery9.Active := true;
ADOQuery10.Active := true;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
ADOQuery1.Active := false;
ADOQuery2.Active := false;
ADOQuery3.Active := false;
ADOQuery4.Active := false;
ADOQuery5.Active := false;
ADOQuery6.Active := false;
ADOQuery7.Active := false;
ADOQuery8.Active := false;
ADOQuery9.Active := false;
ADOQuery10.Active := false;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Z2 := code_obj + strtoint(Edit1.Text) -1;
label13.Caption := 'Z2 = ' + inttostr(Z2 + 1);
end;
procedure TForm1.Button7Click(Sender: TObject);
var
i, t : integer;
square : integer;
number : integer;
naznachenie : string;
type_zal : string;
begin
all_count := 300;
setlength (mas1, 0);
setlength (mas2, 0);
//////// POMESHENIE ////////
num := 0;
for I := 0 to 49 do
begin
inc(num); // №
square := 45 + random (15); // Площадь
// t := random (3);
naznachenie := 'Занятие спортом'; //Назначение
s:='insert into [POMESHENIE] values ('+ inttostr(num)+ ',"'+ inttostr(square)+'","'+naznachenie+'")';
s1:='select * FROM [POMESHENIE]' ;
with Form1 do
begin
ADOQuery8.SQL.Clear;
ADOQuery8.SQL.Add(s) ;
ADOQuery8.ExecSQL;
ADOQuery8.SQL.Clear;
ADOQuery8.SQL.Add(s1) ;
end;
//////////// ZAL ////////////
number := num;
t := random (2);
case t of
0: begin
setlength (mas1, length(mas1) + 1);
mas1[length(mas1)-1] := number;
type_zal := 'Игровой зал';
end;
1:
begin
setlength (mas2, length(mas2) + 1);
mas2[length(mas2)-1] := number;
type_zal := 'Зал обшей физической подготовки';
end;
// 2: type_zal := 'Манеж';
end;
s:='insert into [ZAL] values ('+ inttostr(num)+ ',"'+ type_zal+'","'+ inttostr(number)+'")';
s1:='select * FROM [ZAL]' ;
with Form1 do
begin
ADOQuery9.SQL.Clear;
ADOQuery9.SQL.Add(s) ;
ADOQuery9.ExecSQL;
ADOQuery9.SQL.Clear;
ADOQuery9.SQL.Add(s1) ;
end;
//////// INV_IN_ZAL ////////
end;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
ADOQuery8.SQL.Text:= 'DELETE * FROM ' + 'POMESHENIE';
ADOQuery8.ExecSQL;
ADOQuery9.SQL.Text:= 'DELETE * FROM ' + 'ZAL';
ADOQuery9.ExecSQL;
ADOQuery10.SQL.Text:= 'DELETE * FROM ' + 'INV_IN_ZAL';
ADOQuery10.ExecSQL;
end;
procedure TForm1.Button9Click(Sender: TObject);
var
sss1, sss2, sss3 : string;
t1,t2 : TDateTime;
Hr,min,sec,msec : Word;
begin
sss1:= 'SELECT ARRIVAL_OBJ.code_object, ARRIVAL_OBJ.price, INVENTAR.naimenovanie, POMESHENIE.num_p, POMESHENIE.square FROM POMESHENIE INNER JOIN (ZAL INNER JOIN (((ARRIVAL_OBJ INNER JOIN INVENTAR ON ARRIVAL_OBJ.code_object ';
sss2:= '= INVENTAR.code_object) INNER JOIN INVNUM_INV ON (ARRIVAL_OBJ.code_object = INVNUM_INV.code_object) AND (INVENTAR.code_object = INVNUM_INV.code_object)) INNER JOIN INV_IN_ZAL ON INVNUM_INV.inv_number = INV_IN_ZAL.inv_number)';
sss3:= ' ON ZAL.num_p = INV_IN_ZAL.num_p) ON (INV_IN_ZAL.num_p = POMESHENIE.num_p) AND (POMESHENIE.num_p = ZAL.num_p) WHERE (((ARRIVAL_OBJ.price)>92000) AND ((POMESHENIE.square)<47) AND ((INVENTAR.firm)="Московский СпортИнвентарь"));';
//ADOQuery11.SQL.Clear;
t1 := time;
ADOQuery11.SQL.Text := sss1+sss2+sss3;
{ADOQuery11.SQL.Clear;
ADOQuery11.SQL.Text := sss1+sss2+sss3;
ADOQuery11.SQL.Clear;
ADOQuery11.SQL.Text := sss1+sss2+sss3;
ADOQuery11.SQL.Clear;
ADOQuery11.SQL.Text := sss1+sss2+sss3; }
// ADOQuery11.SQL.Clear;
{ADOQuery11.SQL.Add(sss1) ;
ADOQuery11.ExecSQL;
ADOQuery11.SQL.Clear;
ADOQuery11.SQL.Add(sss2) ;
ADOQuery11.ExecSQL;
ADOQuery11.SQL.Clear;
ADOQuery11.SQL.Add(sss3) ; }
// ADOQuerry11.sql
ADOQuery11.Active := True;
t2 := time;
DecodeTime (T2-T1,Hr,min,sec,msec);
label20.Caption := 'DecodeTime: '+inttostr (msec);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
f : Textfile;
s : string;
begin
//TabArrival_Obj;
//button1.Click();
//TabArrival_Obj;
//inv_num_tec :=1006758;
//inv_num_meb :=1006494;
//inv_num_invent :=1006410;
AssignFile (f, 'ids.txt'); //открыли файл
reset(f);
ReadLn(f, s);
code_obj := strtoint (s);
label8.Caption := inttostr (code_obj);
//
ReadLn(f, s);
inv_num_tec := strtoint (s);
label9.Caption := label9.Caption + inttostr (inv_num_tec);
//
ReadLn(f, s);
inv_num_meb := strtoint (s);
label10.Caption := label10.Caption + inttostr (inv_num_meb);
//
ReadLn(f, s);
inv_num_invent := strtoint (s);
label11.Caption := label11.Caption + inttostr (inv_num_invent);
//
CloseFile (f);
Z1 := code_obj;
Z2 := code_obj+1000;
label13.Caption := 'Z2 = ' + inttostr(Z2);
//////////////
{ADOQuery4.SQL.Text := 'select count(*) as cnt from INVENTAR';
try
ADOQuery4.Open;
Label20.Caption:= ADOQuery4.FieldByName('CNT').AsString;
finally
ADOQuery4.Close;
end; }
//////////////
{ ADOQuery1.SQL.Text := 'select count(*) as cnt from ARRIVAL_OBJ';
try
ADOQuery1.Open;
Label20.Caption:= ADOQuery1.FieldByName('CNT').AsString;
finally
ADOQuery1.Close;
end; }
///////////////
///
ADOQuery4.SQL.Text := 'Select * from [INVENTAR]';
end;
end.