Смекни!
smekni.com

База данный Хозяйственный учет футбольного клуба (стр. 3 из 6)

Стол не может иметь разные характеристики. type_table, material_table> code_table.

Шкаф не может иметь разные характеристики. type_shkaf -> code_shkaf.

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


Рисунок 2.1 – Исходные функциональные зависимости

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-зависимостей по классам эквивалентности. Построение кольцевого покрытия