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 года и находятся в спортивных залах «Общей физической подготовки» ».
Текст первого запроса на языке SQL представлен на рисунке 2.16.
Риунок 2.16 - Текст первого запроса на языке SQL
Исходное операционное дерево для первого запроса представлено на рисунке 2.17.
Рисунок 2.17 - Исходное операционное дерево для первого запроса
Оценка стоимости исходного запроса представлена на рисунке 2.18.
Рисунок 2.18 – Оценка стоимости исходного запроса
... и калькуляционных единиц; - выбор методов распределения косвенных расходов; - разграничение затрат по периодам; - выбор способов расчета себестоимости калькуляционной единицы и др. Эти принципы конкретизируются с учетом специфики отрасли и особенностей производства. Основные задачи калькулирования на предприятиях: - достоверное исчисление фактической себестоимости единицы отдельных видов ...
... приходящих игроков – это случается крайне редко), все знают все друг про друга. 2.3 PR-деятельность в спортивном клубе "ФК ЦСКА" Атрибутика. Изготовлением, разработкой и реализацией атрибутики футбольного клуба "ЦСКА" занимается коммерческий отдел. Он сотрудничает с московской организацией "Мир футбола", которая обслуживает почти все спортивными клубами России. Можно отметить такой факт, ...
... счет высокоэффективных проектов, обеспечивающих создание продуктов с высокой добавленной стоимостью; соблюдение интересов всех акционеров ОАО "Газпром"; совершенствование корпоративного управления, повышение прозрачности финансово-хозяйственной деятельности. Концепция развития компании 1) Освоение новых рентабельных источников добычи для удовлетворения спроса на газ в долгосрочной перспективе. ...
... его сторонников. Без их поддержки эта игра, безусловно, развивалась бы менее эффективно. 3. Дореволюционный этап становления футбола на Ставрополье, при всех проблемах его развития, достиг определенных успехов. В целом же деятельность футбольных клубов и кружков в начале XX веков явилась фундаментом для современного ставропольского футбола. Научное осмысление итогов данного этапа способствует ...
0 комментариев