Оптимизация базы данных "Хозяйственный учет футбольного клуба"

Неформализованное описание предметной области. Словарь терминов для объектов и элементов данных. Первичные и альтернативные ключи. Диаграмма сущность-связь для предметной области. Неизбыточное редуцированное покрытие системы функциональных зависимостей.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.03.2015
Размер файла 398,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

R15 = ( id_spis, data) K15 = { id_spis }

R16 = ( id_spis, inv_number_inv, reason_inv ) K16 = { id_spis }

R17 = ( id_spis, inv_number_tec, reason_tec ) K17 = { id_spis }

R18 = ( id_spis, inv_number_meb, reason_meb ) K18= { id_spis }

4.2 Диаграмма сущность - связь, построенная на основании минимального кольцевого редуцированного покрытия множества функциональных зависимостей

Диаграмма сущность - связь, построенная на основании минимального кольцевого редуцированного покрытия множества функциональных зависимостей представленна на рисунке 4.1

Рисунок 4.1

4.3 Физическая структура базы данных

Физическая структура базы данных представлена на рисунке 4.2

Рисунок 4.2

Программа для заполнения базы данных представлена в "Приложение 1".

5. Построение запросов на языке SQL

5.1 Многотабличный запрос на выборку по условию нескольких строк и логической формулы условий столбцов

В базе данных хранится информация о поступившей бытовой технике, мебели, инвентаре и помещениях, к которым они прикреплены. Требуется вывести коды тренажеров, ценой более 92000, производства фирмы "Московский СпортИнвентарь", которые прикреплены к спортивным залам площадью менее 47 кв.м.

Для упрощения записи введем обозначения, представленные в таблице 5.1.

Таблица 5.1- Обозначения и пояснения

Обозначение

Пояснение

Obj

Таблица Arrived_Obj (список объектов)

Inv

Таблица Inventar (инвентарь)

InvNum

Таблица InvNum_Inv (инвентаризация)

Inv_Zal

Таблица Inv_In_Zal (инвентарь, прикреплённый к помещению )

Zal

Таблица Zal (список спортивных залов)

Pom

Таблица Pomeshenie (список помещений)

Естественное соединение таблиц

5.1.1 Выражение для запроса с использованием операций реляционной алгебры

Выражение для запроса с использование операций реляционной алгебры представлено на рисунке 5.1.

Рисунок 5.1

В данном выражении проекция производится по набору атрибутов X, который имеет следующий вид, представленный на рисунке 5. 2, а селекция проводится по формуле f, представленной на рисунке 5. 3.

Рисунок 5.2

Рисунок 5.3

Исходное операционное дерево для запроса представлено на рисунке 5.4.

Рисунок 5.4

5.1.3 Исходный запрос на языке SQL

Текст исходного запроса на SQL представлен на рисунке 5.5.

SELECT ARRIVAL_OBJ.code_object, ARRIVAL_OBJ.price, INVENTAR.naimenovanie, POMESHENIE.num_p, POMESHENIE.square

FROM POMESHENIE INNER JOIN (ZAL

NNER JOIN (((ARRIVAL_OBJ

INNER JOIN INVENTAR ON

ARRIVAL_OBJ.code_object = 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) 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)="МосковскийСпортИнвентарь"));

Рисунок 5.5

5.1.4 Временные характеристики исходного запроса

Для оценки стоимости выполнения операций реляционной алгебры используются следующие обозначения:

· T(R) - количество строк в таблице R;

· V(R,a) - количество разных значений в столбце a в таблице R.

В таблице 5.2 представлена статистика для оценки временных характеристик запроса.

Таблица 5.2

Таблица ARRIVAL_OBJ

Таблица INVENTAR

Таблица INVNUM_INV

T(OBJ) = 125155

T(INV) = 41690

T(INV_NUM) = 41690

V(OBJ,код) = 125155

V(INV,код) = 41690

V(INV_NUM, код) = 41690

V(INV_NUM, инв. номер) = 41690

Таблица INV_IN_ZAL

Таблица ZAL

Таблица POMESHENIE

T(INV_ZAL) = 41690

T(ZAL) = 50

T(POM) = 50

V(INV_ZAL, инв. номер) = 41690

V(ZAL, номер помещения) = 50

V(POMESHENIE, номер помещения) = 50

V(INV_ZAL, номер помещения) = 50

Для расчета временных характеристик исходного запроса используется исходное операционное дерево, изображенное на рисунке 5.4. Расчет стоимости выполнения операции реляционной алгебры в узле (1) происходит по следующей формуле:

.

,

,

где - число блоков, записанных в таблице ;

- длина одной записи таблицы в блоках;

- длина одной записи таблицы в байтах;

- размер одного блока.

Расчет стоимости выполнения операции реляционной алгебры в узле (2) происходит по формуле:

.

Расчет стоимости выполнения операции реляционной алгебры в узле (3) происходит по формуле:

.

Расчет стоимости выполнения операции реляционной алгебры в узле (4) происходит по формуле:

.

Расчет стоимости выполнения операции реляционной алгебры в узле (5) происходит по формуле:

.

Расчет стоимости выполнения операции реляционной алгебры в узле (6) где - операция селекции с логической формулой .

Формулаимеетвид:

(((ARRIVAL_OBJ.price)>92000) AND

((POMESHENIE.square)<47) AND

((INVENTAR.firm)="МосковскийСпортИнвентарь"));

V(q5, INVENTAR.firm)="Московский СпортИнвентарь"

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

Так как операция проекции располагается последней, то ее не учитывают при расчете сложности запроса.

Окончательно имеем:

.

5.1.5 Оптимизированное операционное дерево для запроса

Оптимизированное операционное дерево получается путем опускания операции селекции вниз по исходному операционному дереву, ближе к листьям дерева.

В результате преобразований получаем оптимизированное операционное дерево, которое на рисунке 5.6 изображено с указанием номеров узлов.

Рисунок 5.6

5.1.6 Оптимизированный запрос на языке SQL

Текст запроса "price" на SQL.

SELECT ARRIVAL_OBJ.*

FROM ARRIVAL_OBJ

WHERE (((ARRIVAL_OBJ.price)>92000));

Текстзапроса "firm" наSQL.

SELECT INVENTAR.*

FROM INVENTAR

WHERE (((INVENTAR.firm)="МосковскийСпортИнвентарь"));

Текст запроса "square" на SQL.

SELECTPOMESHENIE.*

FROMPOMESHENIE

WHERE (((POMESHENIE.square)<47));

Текст оптимизированного запроса на SQL.

SELECT price.code_object, price.price, firm.naimenovanie, square.num_p, square.square

FROM (price INNER JOIN firm ON price.code_object = firm.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.num_p = INV_IN_ZAL.num_p) INNER JOIN square ON ZAL.num_p = square.num_p) ON firm.code_object = INVNUM_INV.code_object;

5.1.7 Временные характеристики оптимизированного запроса

Для оценки стоимости выполнения операций реляционной алгебры оптимизированного запроса используется та же статистика, что и для исходного запроса (таблица 5.2).

Для расчета временных характеристик оптимизированного запроса используется оптимизированное операционное дерево, изображенное на рисунке 5.6.

В узле (1) оптимизированного операционного дерева выполняется операция селекции по условию: f1= (Obj.price>92000). Расчет стоимости выполнения операции селекции происходит по формуле:

.

В узле (2) оптимизированного операционного дерева выполняется операция селекции по условию: f2 = (Inv.firm="Московский СпортИнвентарь"). Расчет стоимости выполнения операции селекции происходит по формуле:

.

В узле (7) оптимизированного операционного дерева выполняется операция селекции по условию: f3 = (Pom.square< 47). Расчет стоимости выполнения операции селекции происходит по формуле:

.

Расчет стоимости в узле (3) производится по формуле:

.

Расчет стоимости в узле (4) производится по формуле:

Расчет стоимости в узле (5) производится по формуле:

Расчет стоимости в узле (6) производится по формуле:

Расчет стоимости в узле (8) производится по формуле:

Так как операция проекции располагается последней, то ее не учитывают при расчете сложности запроса.

Окончательно имеем:

.

5.2 Многотабличный запрос на выборку по условию нескольких строк и логической формулы условий столбцов с использованием "or"

В базе данных хранится информация о поступившей бытовой технике, мебели, инвентаре и помещениях, к которым они прикреплены Требуется вывести коды тренажеров, ценой более 92000, производства фирмы "Московский СпортИнвентарь", которые прикреплены к спортивным залам площадью менее 47 кв.м.

Для упрощения записи введем обозначения, представленные в таблице 5.2.

Таблица 5.3- Обозначения и пояснения

Обозначение

Пояснение

Obj

Таблица Arrived_Obj (список объектов)

Inv

Таблица Inventar (инвентарь)

InvNum

Таблица InvNum_Inv (инвентаризация)

Inv_Zal

Таблица Inv_In_Zal (инвентарь, прикреплённый к помещению )

Zal

Таблица Zal (список спортивных залов)

Pom

Таблица Pomeshenie (список помещений)

Естественное соединение таблиц

5.2.1 Выражение для запроса с использованием операций реляционной алгебры

Выражение для запроса с использование операций реляционной алгебры представлено на рисунке 5.7.

Рисунок 5.7

В данном выражении проекция производится по набору атрибутов X, который имеет следующий вид, представленный на рисунке 5. 8, а селекция проводится по формуле f, представленной на рисунке 5. 9.

Рисунок 5.8

Рисунок 5.9

5.2.2 Исходное операционное дерево для запроса

Исходное операционное дерево для запроса представлено на рисунке 5.10.

Рисунок 5.10

5.2.3 Исходный запрос на языке SQL

Текст исходного запроса на SQL представлен на рисунке 5.11.

Заключение

Целью данного курсового проекта является изучение способов оптимизации базы данных, а так же запросов используемых в этой базе данных.

При оптимизации запросов необходимо используя исходное операционное дерево данного запроса вычислить время его выполнения и если возможно, то оптимизировать запрос и просчитать время выполнения уже оптимизированного запроса. Оптимизированный запрос должен быстрее выполняться, чем исходный неоптимизированный запрос. Оптимизация запроса достигается путем уменьшения количества данных, необходимых для обработки.

Время выполнения запроса №1 составило T(R)=16690. После оптимизации время выполнения запроса сократилось до T(R=3930). Отношение времени выполнения исходногои оптимизированного запросов равно .

При практическом измерении отношение времени выполнения исходного запроса к оптимизированному составило . Расхождение практического времени выполнения и рассчитанного вызвано неточными измерениями на практике.

Список литературы

1. Костюк В.В., "Лабораторный практикум по курсу " Проектирование баз данных" ", М., РГУИТП, 2012.

2. Гайдамакин Н.А. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учебное пособие. - М.: Гелиос АРВ, 2010.

3. Зеленков Ю.А. Введение в базы данных. - 2007.

4. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / Под ред. Проф. А.Д. Хомоненко - СПб.: КОРОНА принт, 2009.

5. Введение в системы баз данных. К. Дж. Дейт, 2008.

Приложение 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;

c(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.

Размещено на Allbest.ru


Подобные документы

  • Проектирование базы данных "Хозяйственный учет футбольного клуба". Основные принципы построения, использования и оптимизации реляционных баз данных. Анализ предметной области. Использование ER-диаграмм, минимизация зависимостей, построение запросов.

    дипломная работа [856,5 K], добавлен 21.06.2010

  • Описание предметной области, определение функциональных требований к системе и построение диаграммы потока данных. Построение модели "сущность-связь", описание сущностей и атрибутов модели. Построение реляционной базы данных и описание ее таблицы.

    курсовая работа [624,5 K], добавлен 30.05.2019

  • Разработка базы данных магазина косметики, позволяющей вести учёт и анализ поставок и продаж. Описание предметной области, составление словаря понятий и терминов и системы функциональных зависимостей. Запись минимизированных запросов на языке SQL.

    курсовая работа [612,6 K], добавлен 18.07.2012

  • Исследование основных требований, предъявляемых к инфологической модели. Методы представления предметной области. Инфологическое описание предметной области. Модель "сущность-связь". Типы бинарных связей. Отражение объектов в информационной системе.

    презентация [397,3 K], добавлен 29.09.2013

  • Описание объекта информатизации и предметной области. Анализ параметров объектов предметной области, сбор исходных данных. Архитектура проекта, создание интерфейса базы данных. Поиск по объектам, датам. Редактирование, отчеты. Назначение программы.

    курсовая работа [2,3 M], добавлен 20.01.2016

  • Базы данных, содержащие информацию о графических редакторах. Предметная область, словарь понятий и терминов. Построение функциональных зависимостей. Синтез схемы базы данных на основании функциональных зависимостей. Построение неизбыточного покрытия.

    курсовая работа [190,8 K], добавлен 12.05.2009

  • Анализ предметной области, ее формализации с помощью функциональных зависимостей. Этапы минимизации системы функциональных зависимостей и на основании полученной редуцированной системы проектирование модели базы данных. Создание и моделирование запросов.

    курсовая работа [1,7 M], добавлен 21.06.2010

  • Оценка предметной области: концептуальные требования; выявление информационных объектов и связей между ними; построение базы данных. Описание входных и выходных данных информационной системы "Магазин компьютерной техники". Анализ диаграммы прецедентов.

    курсовая работа [294,8 K], добавлен 13.04.2014

  • Описание движения документов внутри организации. Описание входящих, исходящих, внешних и внутренних документов. Моделирование предметной области, первичные ключи. Описание сущностей, атрибутов, связей и доменов. Хранение, извлечение и обновление данных.

    дипломная работа [1,3 M], добавлен 01.05.2015

  • Описание предметной области разрабатываемой базы данных для теннисного клуба. Обоснование выбора CASE-средства Erwin 8 и MS Access для проектирования базы данных. Построение инфологической модели и логической структуры базы данных, разработка интерфейса.

    курсовая работа [3,8 M], добавлен 02.02.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.