бесплатные рефераты

База данный "Хозяйственный учет футбольного клуба"

Рисунок 2.3 - Исходное множество функционаьных зависимостей

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

2.4.2 Построение леворедуцированного покрытия

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

2.4.3 Построение праворедуцированного покрытия

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

2.4.4 Построение классов эквивалентности

Этапы построения классов эквивалентности представлены на рисунке 2.8.

1. Ef( sp, np ):

sp, np -> Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost

Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat -> sp, np

sp, np -> num_room

2. Ef( sp_pl, np_pl ):

sp_pl, np_pl -> date, rost, ves, staff, number, status

date, staff, number, status -> sp_pl, np_pl

3. Ef( num_p ):

num_p -> square, naznachenie

4. Ef( num_room ):

num_room -> room

5. Ef( num_zal ):

num_zal -> type_zal

num_zal -> num_p

6. Ef( code_obj ):

code_obj -> kol, date, balance

7. Ef( code_inv ):

code_inv -> firm_inv, model_inv; code_inv -> code_obj

8. Ef( code_tec ):

code_tec -> firm_tec, model_tec; code_tec -> code_obj

9. Ef( code_meb ):

code_meb -> firm_meb, dlina, width, height, color; code_meb -> code_obj

10. Ef( inv_number_INV ):

inv_number_INV -> code_inv

11. Ef( inv_number_TEC ):

15. Ef( inv_number_MEB_out ):

inv_number_MEB_out -> inv_number_MEB

inv_number_MEB_out -> date_out_meb

16. Ef( inv_number_INV, date_IinZal ):

inv_number_INV, date_IinZal -> num_zal

17. Ef( inv_number_TEC, date_TecInP ):

inv_number_TEC, date_TecInP -> num_р

18. Ef( inv_number_MEB, date_MebInP ):

inv_number_MEB, date_MebInP -> num_р

19. Ef( code_balls ):

code_balls -> material

code_balls -> code_inv

20. Ef( code_gate ):

code_gate -> height_gate, shirina, kind

code_gate -> code_inv

21. Ef( code_trenager ):

code_trenager -> type

code_trenager -> code_inv

22. Ef( code_TV ):

code_TV -> diagonal, screen

code_TV -> code_tec

23. Ef( code_refreg ):

code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume

code_refreg -> code_tec

24. Ef( code_vacuum ):

code_vacuum -> moshnost_v

code_vacuum -> code_tec

25. Ef( code_bed ):

code_bed -> type_bed

code_bed -> code_meb

26. Ef( code_table ):

code_table -> type_table, material_table

code_table -> code_meb

27. Ef( code_shkaf ):

code_shkaf -> type_shkaf

code_shkaf -> code_meb

Рисунок 2.4 - Этапы построения классов эквивалентности

2.4.5 Построение минимального покрытия на основе прямой функциональной определяемости

Этапы построения минимального покрытия на основе прямой функциональной определяемости представлены на рисунке 2.5.

2. Проверка: f \ Ef(sp, np) |= sp, np -> sp, np?

Да => заменяем sp, np -> Fam, Im, Otch, pol, dateborn, datevidachi,

kemvidan, country, city, street, numstreet, numflat, dolgnost и sp, np ->

num_room на sp, np -> Fam, Im, Otch, pol, dateborn, datevidachi,

kemvidan, country, city, street, numstreet, numflat, dolgnost, num_room.

5. Проверка: f \ Ef(num_zal) |= num_zal -> num_zal?

Да => заменяем num_zal -> type_zal и num_zal -> num_p на num_zal ->

type_zal, num_p.

6. Проверка: f \ Ef(code_inv) |= code_inv -> code_inv?

Да => заменяем code_inv -> firm_inv, model_inv и code_inv -> code_obj

на code_inv -> firm_inv, model_inv, code_obj.

7. Проверка: f \ Ef(code_tec) |= code_tec -> code_tec?

Да => заменяем code_tec -> firm_tec, model_tec и code_tec ->

code_obj на code_tec -> firm_tec, model_tec, code_obj.

8. Проверка: f \ Ef(code_meb) |= code_meb -> code_meb?

Да => заменяем code_meb -> firm_meb, dlina, width, height, color и

code_meb -> code_obj на code_meb -> firm_meb, dlina, width, height,

color, code_obj.

9. Проверка: f \ Ef(inv_number_INV_out) |= inv_number_INV_out ->

inv_number_INV_out?

Да => заменяем inv_number_INV_out -> inv_number_INV и

inv_number_INV_out -> date_out_inv на inv_number_INV_out ->

inv_number_INV, date_out_inv.

10. Проверка: f \ Ef(inv_number_TEC_out) |= inv_number_TEC_out ->

inv_number_TEC_out?

Да => заменяем inv_number_TEC_out -> inv_number_TEC и

inv_number_TEC_out -> date_out_tec на inv_number_TEC_out ->

inv_number_TEC, date_out_tec.

11. Проверка: f \ Ef(inv_number_MEB_out) |= inv_number_MEB_out ->

inv_number_MEB_out?

Да => заменяем inv_number_MEB_out -> inv_number_MEB и

inv_number_MEB_out -> date_out_meb на inv_number_MEB_out ->

inv_number_MEB, date_out_meb.

12. Проверка: f \ Ef(code_balls) |= code_balls -> code_balls?

Да => заменяем code_balls -> material и code_balls -> code_inv на

code_balls -> material, code_inv.

13. Проверка: f \ Ef(code_gate) |= code_gate -> code_gate?

Да => заменяем code_gate -> height_gate, shirina, kind и code_gate ->

code_inv на code_gate -> height_gate, shirina, kind, code_inv.

Рисунок 2.5 - Этапы построения минимального покрытия на основе прямой функциональной определяемости

Редуцированное минимальное покрытие представлено на рисунке 2.6

Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat

> sp, np

sp_pl, np_pl

> date, rost, ves, staff, number, status

date, staff, number, status

> sp_pl, np_pl

num_p

> square, naznachenie

num_room

> room

code_obj

> kol, date, balance

inv_number_INV

> code_inv

inv_number_TEC

> code_tec

inv_number_MEB

> code_meb

inv_number_INV, date_IinZal

> num_zal

inv_number_TEC, date_TecInP

> num_р

inv_number_MEB, date_MebInP

> num_р

sp, np

> Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost, num_room

num_zal

> type_zal, num_p

code_inv

> firm_inv, model_inv, code_obj

code_tec

> firm_tec, model_tec, code_obj

code_meb

> firm_meb, dlina, width, height, color, code_obj

inv_number_INV_out

> inv_number_INV, date_out_inv

inv_number_TEC_out

> inv_number_TEC, date_out_tec

inv_number_MEB_out

> inv_number_MEB, date_out_meb

code_balls

> material, code_inv

code_gate

> height_gate, shirina, kind, code_inv

code_trenager

> type, code_inv

code_TV

> diagonal, screen, code_tec

code_refreg

> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume, code_tec

code_vacuum

> moshnost_v, code_tec

code_bed

> type_bed, code_meb

code_table

> type_table, material_table, code_meb

code_shkaf

> type_shkaf, code_meb

Рисунок 2.6 - Редуцированное минимальное покрытие

2.4.6 Построение редуцированного минимального кольцевого покрытия

Определение CF-зависимостей по классам эквивалентности. Построение кольцевого покрытия

Минимальное кольцевое покрытие представлено на рисунке 2.7

( sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat; )

-> pol, datevidachi, kemvidan, dolgnost, num_room

( sp_pl, np_pl; date, staff, number, status; ) -> rost, ves

( num_p; ) -> square, naznachenie

( num_room; ) -> room

( num_zal; ) -> type_zal, num_p

( code_obj; ) -> kol, date, balance

( code_inv; ) -> firm_inv, model_inv, code_obj

( code_tec; ) -> firm_tec, model_tec, code_obj

( code_meb; ) -> firm_meb, dlina, width, height, color, code_obj

( inv_number_INV; ) -> code_inv

( inv_number_TEC; ) -> code_tec

( inv_number_MEB; ) -> code_meb

( inv_number_INV_out; ) -> inv_number_INV, date_out_inv

( inv_number_TEC, _out; )

( inv_number_MEB_out; ) -> inv_number_MEB, date_out_meb

( inv_number_TEC_out; ) -> date_out_tec

( inv_number_INV, date_IinZal; ) -> num_zal

( inv_number_TEC, date_TecInP; ) -> num_р

( inv_number_MEB, date_MebInP; ) -> num_р

( code_balls; ) -> material, code_inv

( code_gate; ) -> height_gate, shirina, kind, code_inv

( code_trenager; ) -> type, code_inv

( code_TV; ) -> diagonal, screen, code_tec

( code_refreg; ) -> height_ref, widht_ref, depht_ref, sum_sq_polok,

com_volume, user_volume, code_tec

( code_vacuum; ) -> moshnost_v, code_tec

( code_bed; ) -> type_bed, code_meb

( code_table; ) -> type_table, material_table, code_meb

( code_shkaf; ) -> type_shkaf, code_meb

Рисунок 2.7 - Минимальное кольцевое покрытие

Получение кольцевого минимального редуцированного покрытия

Естественное характеристическое множество для кольцевого покрытия представлено на рисунке 2.8.

f(C):

sp, np -> Fam, Im, Otch, dateborn, country, city, street, numstreet,

numflat

Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat -> sp,

np

Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat -> pol,

datevidachi, kemvidan, dolgnost, num_room

sp_pl, np_pl -> date, staff, number, status

date, staff, number, status -> sp_pl, np_pl

date, staff, number, status -> rost, ves

code_tec -> firm_tec, model_tec, code_obj

code_meb -> firm_meb, dlina, width, height, color, code_obj

inv_number_INV -> code_inv

inv_number_TEC -> code_tec

inv_number_MEB -> code_meb

inv_number_INV_out -> inv_number_INV, date_out_inv

inv_number_MEB_out -> inv_number_MEB, date_out_meb

inv_number_TEC_out -> date_out_tec

inv_number_INV, date_IinZal -> num_zal

inv_number_TEC, date_TecInP -> num_р

inv_number_MEB, date_MebInP -> num_р

code_balls -> material, code_inv

code_gate -> height_gate, shirina, kind, code_inv

code_trenager -> type, code_inv

code_TV -> diagonal, screen, code_tec

code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok,

com_volume, user_volume, code_tec

code_vacuum -> moshnost_v, code_tec

code_bed -> type_bed, code_meb

code_table -> type_table, material_table, code_meb

code_shkaf -> type_shkaf, code_meb

Рисунок 2.8 - Естественное характеристическое множество для кольцевого покрытия

Минимальное редуцированное кольцевое покрытие представлено на рисунке 2.9.

( sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet,

numflat; ) -> pol, datevidachi, kemvidan, dolgnost, num_room

( sp_pl, np_pl; date, staff, number, status; ) -> rost, ves

( num_p; ) -> square, naznachenie

( num_room; ) -> room

( num_zal; ) -> type_zal, num_p

( code_obj; ) -> kol, date, balance

( code_inv; ) -> firm_inv, model_inv, code_obj

( code_tec; ) -> firm_tec, model_tec, code_obj

( code_meb; ) -> firm_meb, dlina, width, height, color, code_obj

( inv_number_INV; ) -> code_inv

( inv_number_TEC; ) -> code_tec

( inv_number_MEB; ) -> code_meb

( inv_number_INV_out; ) -> inv_number_INV, date_out_inv

( inv_number_TEC, _out; )

( inv_number_MEB_out; ) -> inv_number_MEB, date_out_meb

( inv_number_TEC_out; ) -> date_out_tec

( inv_number_INV, date_IinZal; ) -> num_zal

( inv_number_TEC, date_TecInP; ) -> num_р

( inv_number_MEB, date_MebInP; ) -> num_р

( code_balls; ) -> material, code_inv

( code_gate; ) -> height_gate, shirina, kind, code_inv

( code_trenager; ) -> type, code_inv

( code_TV; ) -> diagonal, screen, code_tec

( code_refreg; ) -> height_ref, widht_ref, depht_ref, sum_sq_polok,

com_volume, user_volume, code_tec

( code_vacuum; ) -> moshnost_v, code_tec

( code_bed; ) -> type_bed, code_meb

( code_table; ) -> type_table, material_table, code_meb

( code_shkaf; ) -> type_shkaf, code_meb

Рисунок 2.9 - Минимальное редуцированное кольцевое покрытие

Естественное характеристическое множество представлено на рисунке 2.10.

R0 = ( sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet,

numflat, pol, datevidachi, kemvidan, dolgnost, num_room ) K0 = { sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat }

R1 = ( sp_pl, np_pl; date, staff, number, status, rost, ves ) K1 = { sp_pl, np_pl; date, staff, number, status }

R2 = ( num_p, square, naznachenie ) K2 = { num_p }

R3 = ( num_room, room ) K3 = { num_room }

R4 = ( num_zal, type_zal, num_p ) K4 = { num_zal }

R5 = ( code_obj, kol, date, balance ) K5 = { code_obj }

R6 = ( code_inv, firm_inv, model_inv, code_obj ) K6 = { code_inv }

R7 = ( code_tec, firm_tec, model_tec, code_obj ) K7 = { code_tec }

R8 = ( code_meb, firm_meb, dlina, width, height, color, code_obj ) K8 = { code_meb }

R9 = ( inv_number_INV, code_inv ) K9 = { inv_number_INV }

R10 = ( inv_number_TEC, code_tec ) K10 = { inv_number_TEC }

R11 = ( inv_number_MEB, code_meb ) K11 = { inv_number_MEB }

R12 = ( inv_number_INV_out, inv_number_INV, date_out_inv ) K12 = { inv_number_INV_out }

R13 = ( inv_number_TEC, _out ) K13 = { inv_number_TEC, _out }

R14 = ( inv_number_MEB_out, inv_number_MEB, date_out_meb ) K14 = {inv_number_MEB_out }

R15 = ( inv_number_TEC_out, date_out_tec ) K15 = { inv_number_TEC_out }

R16 = ( inv_number_INV, date_IinZal, num_zal ) K16 = { inv_number_INV, date_IinZal }

R17 = ( inv_number_TEC, date_TecInP, num_р ) K17 = { inv_number_TEC, date_TecInP }

R18 = ( inv_number_MEB, date_MebInP, num_р ) K18 = { inv_number_MEB, date_MebInP }

R19 = ( code_balls, material, code_inv ) K19 = { code_balls }

R20 = ( code_gate, height_gate, shirina, kind, code_inv ) K20 = { code_gate }

R21 = ( code_trenager, type, code_inv ) K21 = { code_trenager }

R22 = ( code_TV, diagonal, screen, code_tec ) K22 = { code_TV }

R23 = ( code_refreg, height_ref, widht_ref, depht_ref, sum_sq_polok,

com_volume, user_volume, code_tec ) K23 = { code_refreg }

R24 = ( code_vacuum, moshnost_v, code_tec ) K24 = { code_vacuum }

R25 = ( code_bed, type_bed, code_meb ) K25 = { code_bed }

R26 = ( code_table, type_table, material_table, code_meb ) K26 = { code_table }

R27 = ( code_shkaf, type_shkaf, code_meb ) K27 = { code_shkaf }

Рисунок 2.10 - Естественное характеристическое множество

2.5 Концептуальная модель

Исходная концептуальная модель базы данных представлена на рисунке 2.15.

Рисунок 2.15 - Концептуальная модель (ER-диаграмма) базы данных

После проведения всех этапов минимизации концептуальная модель не изменилась.

2.6 Построение запросов

2.6.1 Построение первого запроса

2.6.1.1 Исходный запрос

Первый запрос формулируется следующим образом: «Вывести коды партий футбольных ворот типа «юниорские», которые производятся фирмой Star, относятся к модели K325, поступили не раньше 2007 года и находятся в спортивных залах «Общей физической подготовки» ».

Текст первого запроса на языке SQL представлен на рисунке 2.16.

Риунок 2.16 - Текст первого запроса на языке SQL

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

Рисунок 2.17 - Исходное операционное дерево для первого запроса

Оценка стоимости исходного запроса представлена на рисунке 2.18.

Рисунок 2.18 - Оценка стоимости исходного запроса

2.6.1.2 Минимизированный запрос

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

SELECT code_obj from gate WHERE gate.kind="Стандартные"

INTO CURSOR C1

SELECT code_obj FROM inventar WHERE

(ALLTRIM(inventar.firm)="Mizuno" AND

ALLTRIM(inventar.model)="K235") INTO CURSOR C2

SELECT code_obj from arrival_object WHERE

((arrival_object.date)>={^2007-01-01}) INTO CURSOR d5

SELECT * FROM c1 INNER JOIN c2 ON c1.code_obj=c2.code_obj

INTO CURSOR C3

SELECT * FROM c3 INNER JOIN d5 ON d5.code_obj=c3.code_obj_a

INTO CURSOR C6

SELECT code_obj_a,inv_number from invnum_inv INNER JOIN C6

ON ALLTRIM(code_obj_a)==ALLTRIM(invnum_inv.code_obj)

INTO CURSOR C7

SELECT code_obj_a,num_p from inv_in_zal INNER JOIN C7 ON inv_in_zal.inv_number=c7.inv_number INTO CURSOR C9

SELECT num_p from zal WHERE

ALLTRIM(zal.type_zal)="Общей физической подготовки"

INTO CURSOR C10

SELECT DISTINCT code_obj_a from C9 INNER JOIN C10

ON C9.num_p=C10.num_p

Рисунок 2.19 - Текст минимизированного первого запроса

Минимизированное операционное дерево для первого запроса представлено на рисунке 2.20.

Рисунок 2.20 - Операционное дерево для минимизированного первого запроса

Оценка стоимости минимизированного запроса представлена на рисунке 2.21.

Рисунок 2.21- Оценка стоимости минимизированного первого запроса

2.6.2 Построение второго запроса

Словесная формулировка запроса следующая: «Вывести номера спортивных залов, в которых хранится инвентарь, принадлежащий обеим партиям: 522715, 413998».

Текст запроса на языке SQL представлен на рисунке 2.22.

SELECT num_p FROM zal WHERE ALLTRIM(zal.type_zal)=''

INTO CURSOR CR1

SELECT num_p,code_del FROM del,CR1 INTO CURSOR CR4

SELECT CR1.num_p,inv_number FROM CR1 INNER JOIN inv_in_zal

ON CR1.num_p==inv_in_zal.num_p INTO CURSOR CR2

SELECT num_p,code_obj FROM CR2 INNER JOIN invnum_inv

ON (invnum_inv.inv_number==CR2.inv_number) DISTINCT

INTO CURSOR CR3

SELECT DISTINCT num_p from CR4 WHERE NOT EXISTS

(SELECT CR3.num_p FROM CR3 WHERE (CR4.num_p==CR3.num_p

AND CR4.code_del==CR3.code_obj))into CURSOR CR5

SELECT CR1.num_p,CR5.num_p FROM CR1 LEFT JOIN CR5 ON

CR1.num_p=CR5.num_p INTO CURSOR CR6

SELECT DISTINCT num_p FROM CR1 WHERE NOT EXISTS (Select CR6.num_p_b from CR6 WHERE CR1.num_p=CR6.num_p_b)

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


© 2010 РЕФЕРАТЫ