2.3.2 Функциональные зависимости сохраняющие иерархию

В данном множестве есть следующие зависимости, которые сохраняют иерархию:

Спортивным залом не может быть несуществующее помещение. num_zal -> num_p.

Не поступавшая партия объектов не может быть зарегистрирована как инвентарь. code_inv -> code_obj.

Не поступавшая партия объектов не может быть зарегистрирована как техника. code_tec -> code_obj.

Не поступавшая партия объектов не может быть зарегистрирована как мебель. code_meb -> code_obj.

Незарегистрированная единица инвентаря не может быть списана. inv_number_INV_out -> inv_number_INV.

Незарегистрированная единица техники не может быть списана.

inv_number_TEC _out -> inv_number_TEC.

Незарегистрированная единица мебели не может быть списана. inv_number_MEB_out -> inv_number_MEB.

Незарегистрированная партия инвентаря инвентаря не может быть партией мячей.

code_balls -> code_inv.

Одна и та же партия ворот не может поступить дважды.

code_gate -> code_inv.

Одна и та же партия тренажеров не может поступить дважды.

code_trenager -> type.

Одна и та же партия телевизоров не может поступить дважды.

code_TV -> diagonal, screen.

Одна и та же партия холодильников не может поступить дважды.

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

Функциональные зависимости сохраняющие иерархию представлены на рисунке 2.2.


Рисунок 2.2 - Функциональные зависимости, сохраняющие иерархию

2.4           Синтез схемы базы данных на основании функциональных зависимостей   2.4.1    Построение неизбыточного покрытия

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

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_pl, np_pl -> date, rost, ves, staff, number, status
date, staff, number, status -> sp_pl, np_pl
sp, np -> num_room
num_p -> square, naznachenie
num_room -> room
num_zal -> type_zal
num_zal -> num_p
code_obj -> kol, date, balance
code_inv -> firm_inv, model_inv
code_inv -> code_obj
code_tec -> firm_tec, model_tec
code_tec -> code_obj
code_meb -> firm_meb, dlina, width, height, color
code_meb -> code_obj
inv_number_INV -> code_inv
inv_number_TEC -> code_tec
inv_number_MEB -> code_meb
inv_number_INV_out -> inv_number_INV
inv_number_TEC_out -> inv_number_TEC
inv_number_MEB_out -> inv_number_MEB
inv_number_INV_out -> date_out_inv
inv_number_TEC_out -> date_out_tec
inv_number_MEB_out -> date_out_meb
inv_number_INV, date_IinZal -> num_zal
inv_number_TEC, date_TecInP -> num_р
inv_number_MEB, date_MebInP -> num_р
code_balls -> material
code_balls -> code_inv
code_gate -> height_gate, shirina, kind
code_gate -> code_inv
code_trenager -> type
code_trenager -> code_inv
code_TV -> diagonal, screen
code_TV -> code_tec
code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume
code_refreg -> code_tec
code_vacuum -> moshnost_v
code_vacuum -> code_tec
code_bed -> type_bed
code_bed -> code_meb
code_table -> type_table, material_table
code_table -> code_meb
code_shkaf -> type_shkaf
code_shkaf -> code_meb

Рисунок 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 года и находятся в спортивных залах «Общей физической подготовки» ».

Подпись: SELECT *;
FROM((((gate INNER JOIN inventar ON   
           ALLTRIM(inventar.code_obj)==ALLTRIM(gate.code_obj)); 
INNER JOIN arrival_object ON 
     ALLTRIM(arrival_object.code_obj)==ALLTRIM(gate.code_obj));
INNER JOIN invnum_inv ON  
         ALLTRIM(invnum_inv.code_obj)==ALLTRIM(gate.code_obj));
INNER JOIN inv_in_zal ON  ALLTRIM(inv_in_zal.inv_number)==ALLTRIM(invnum_inv.inv_number))
INNER JOIN zal ON zal.num_p==inv_in_zal.num_p;
WHERE  ALLTRIM(gate.kind)="Стандартные";
       AND (ALLTRIM(inventar.firm)="Mizuno");
       AND (ALLTRIM(inventar.model)="K235");
       AND ((arrival_object.date)>={^2007-01-01});
       AND (ALLTRIM(zal.type_zal)="Общей физической подготовки")
       INTO CURSOR cur    
SELECT DISTINCT code_obj_a FROM cur ;
Текст первого запроса на языке SQL представлен на рисунке 2.16.

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

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


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

Подпись: ,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
 ,

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


Подпись: ,
 ,
 .
 
     
 

     
 

     
 

     
 

     
 ,      
 ;  ;  ;   ;      ;   ;   ;     
 
     
 
     
Оценка: 525613610   
Рисунок 2.18 – Оценка стоимости исходного запроса


Информация о работе «База данный "Хозяйственный учет футбольного клуба"»
Раздел: Информатика, программирование
Количество знаков с пробелами: 57810
Количество таблиц: 37
Количество изображений: 13

Похожие работы

Скачать
108705
3
2

... и калькуляционных единиц; - выбор методов распределения косвенных расходов; - разграничение затрат по периодам; - выбор способов расчета себестоимости калькуляционной единицы и др. Эти принципы конкретизируются с учетом специфики отрасли и особенностей производства. Основные задачи калькулирования на предприятиях: - достоверное исчисление фактической себестоимости единицы отдельных видов ...

Скачать
121875
1
8

... приходящих игроков – это случается крайне редко), все знают все друг про друга. 2.3 PR-деятельность в спортивном клубе "ФК ЦСКА" Атрибутика. Изготовлением, разработкой и реализацией атрибутики футбольного клуба "ЦСКА" занимается коммерческий отдел. Он сотрудничает с московской организацией "Мир футбола", которая обслуживает почти все спортивными клубами России. Можно отметить такой факт, ...

Скачать
49396
0
22

... счет высокоэффективных проектов, обеспечивающих создание продуктов с высокой добавленной стоимостью; соблюдение интересов всех акционеров ОАО "Газпром"; совершенствование корпоративного управления, повышение прозрачности финансово-хозяйственной деятельности. Концепция развития компании 1) Освоение новых рентабельных источников добычи для удовлетворения спроса на газ в долгосрочной перспективе. ...

Скачать
340626
1
0

... его сторонников. Без их поддержки эта игра, безусловно, развивалась бы менее эффективно. 3. Дореволюционный этап становления футбола на Ставрополье, при всех проблемах его развития, достиг определенных успехов. В целом же деятельность футбольных клубов и кружков в начале XX веков явилась фундаментом для современного ставропольского футбола. Научное осмысление итогов данного этапа способствует ...

0 комментариев


Наверх