
- •«Курский государственный университет»
- •Курсовая работа
- •1. Техническое задание 2
- •2. Модель предметной области в виде системы функциональных зависимостей 12
- •5. Построение запросов на языке sql 32
- •1.1.2. Объекты предметной области
- •1.1.3. Процессы взаимодействия между объектами, происходящие в предметной области
- •Формализованное описание предметной области
- •1.2.1. Словарь терминов для объектов и элементов данных
- •1.2.2. Первичные и альтернативные ключи
- •2.1.2. Не ключевые функциональные зависимости
- •2.1.3. Функциональные зависимости для сохранения иерархии
- •2.1.4.Функциональные зависимости для устранения потери информации при соединении
- •2.1.5. Исходное множество функциональных зависимостей
- •Неизбыточное редуцированное покрытие системы функциональных зависимостей
- •Построение неизбытычного покрытия
- •3.2. Построениелеворедуцированногопокрытия
- •3.3. Построениеправоредуцированногопокрытия
- •Минимальное кольцевое редуцированное покрытие системы функциональных зависимостей
- •4.1 Естественноехарактеристическоемножество:
- •5.1.1. Выражение для запроса с использованием операций реляционной алгебры
- •5.1.3. Исходный запрос на языке sql
- •5.1.4. Временные характеристики исходного запроса
- •5.1.5. Оптимизированное операционное дерево для запроса
- •5.1.6. Оптимизированный запрос на языке sql
- •5.1.7. Временные характеристики оптимизированного запроса
- •5.2. Многотабличный запрос на выборку по условию нескольких строк и логической формулы условий столбцов с использованием "or"
- •5.2.1. Выражение для запроса с использованием операций реляционной алгебры
- •5.2.2. Исходное операционное дерево для запроса
- •5.2.3. Исходный запрос на языке sql
- •Приложение 1
2.1.5. Исходное множество функциональных зависимостей
passprot ->fam, im, otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost
passport -> staff_pl, number, status_pl
passport -> staff_c, number_c
pop_index -> person_id, num_p
num_p -> square, naznachenie
num_p -> num_zal, type_zal
num_p -> num_room
tec_in -> date_tec, num_p, inv_number_pom
meb_in -> date_meb, num_p, inv_number_meb
inv_in_id -> date_inv, num_p, inv_number_inv
inv_number_inv -> code_obj
inv_number_tec -> code_obj
inv_number_meb -> code_obj
code_obj -> date, price
code_obj -> firm_inv, model_inv
code_obj -> firm_tec, model_tec
code_obj -> firm_meb, model_meb, dlina, width, height
id_spis -> data
id_spis -> inv_number_inv, reason_inv
id_spis -> inv_number_tec, reason_tec
id_spis -> inv_number_meb, reason_meb
Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost -> passport
num_room -> passport
num_zal -> inv_number_inv
num_р -> inv_number_tec
num_р -> inv_number_meb
number -> passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost
status_c -> passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost
passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost -> Person
passport ,staff_pl, number, status_pl -> player
passport , staff_c, status_c -> coach
pop_index , passport, num_p -> populate
num_p , square, naznachenie -> pomeshenie
num_p, num_zal, type_zal -> zal
num_p ,num_room -> room
tec_in , date_tec, num_p, inv_number_pom -> techno_in_pom
meb_in , date_meb, num_p, inv_number_meb -> meb_in_pom
inv_in_id ,date_inv, num_p, inv_number_inv -> inv_in_zal
inv_number_inv , code_obj -> invenum_inv
inv_number_tec, code_obj -> invenum_tec
inv_number_meb, code_obj -> invenum_meb
code_obj , kol, date, price -> arrival_object
code_obj , firm_inv, model_inv -> inventar
code_obj , firm_tec, model_tec -> techno
code_obj , firm_meb, dlina, width, height, color -> mebel
id_spis , data -> spisanie
id_spis , inv_number_inv , reason_inv -> out_inventar
id_spis , inv_number_tec , reason_tec -> out_techno
id_spis , inv_number_meb , reason_meb -> out_mebel
Неизбыточное редуцированное покрытие системы функциональных зависимостей
Построение неизбытычного покрытия
Построение неизбыточного покрытия
g:
passport -> fam, im, otch, pol, dateborn, datevidachi, kemvidan, country,
city, street, numstreet, numflat, dolgnost
passport -> staff_pl, number, status_pl
passport -> staff_c, status_c
pop_index -> person_id, num_p
num_p -> square, naznachenie
num_p -> num_zal, type_zal
num_p -> num_room
tec_in -> date_tec, num_p, inv_number_tec
meb_in -> date_meb, num_p, inv_number_meb
inv_in_id -> date_inv, num_p, inv_number_inv
inv_number_inv -> code_obj
inv_number_tec -> code_obj
inv_number_meb -> code_obj
code_obj -> date, price
code_obj -> firm_inv, model_inv
code_obj -> firm_tec, model_tec
code_obj -> firm_meb, model_meb, dlina, width, height
id_spis -> data
id_spis -> inv_number_inv, reason_inv
id_spis -> inv_number_tec, reason_tec
id_spis -> inv_number_meb, reason_meb
Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city,
street, numstreet, numflat, dolgnost -> passport
num_room -> passport
num_zal -> inv_number_inv
num_p -> inv_number_tec
num_p -> inv_number_meb
passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country,
city, street, numstreet, numflat, dolgnost -> person
passport, staff_pl, number, status_pl -> player
pop_index, person_id, num_p -> populate
num_p, square, naznachenie -> pomeshenie
num_p, num_zal, type_zal -> zal
num_p, num_room -> room
tec_in, date_tec, num_p, inv_number_tec -> techno_in_pom
meb_in, date_meb, num_p, inv_number_meb -> meb_in_pom
inv_in_id, date_inv, num_p, inv_number_inv -> inv_in_zal
inv_number_inv, code_obj -> invenum_inv
inv_number_tec, code_obj -> invenum_tec
inv_number_meb, code_obj -> invenum_meb
code_obj, date, price -> arrival_object
code_obj, firm_inv, model_inv -> inventar
code_obj, firm_tec, model_tec -> techno
firm_meb, model_meb, dlina, width, height -> mebel
id_spis, data -> spisanie
id_spis, inv_number_inv, reason_inv -> out_inventar
id_spis, inv_number_tec, reason_tec -> out_techno
id_spis, inv_number_meb, reason_meb -> out_mebel
number -> passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost
status_c -> passport, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost
passport, staff_c, status_c -> coach
1. f=g \ passport -> fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost
Проверяем: f |= passport ->fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost
[passport]+f = passport, staff_pl, number, status_pl, staff_c, status_c,
player, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country, city,
street, numstreet, numflat, dolgnost, person, coach
Äà => g=f
g:
passport -> staff_pl, number, status_pl
passport -> staff_c, status_c
pop_index -> person_id, num_p
num_p -> square, naznachenie
num_p -> num_zal, type_zal
num_p -> num_room
tec_in -> date_tec, num_p, inv_number_tec
meb_in -> date_meb, num_p, inv_number_meb
inv_in_id -> date_inv, num_p, inv_number_inv
inv_number_inv -> code_obj
inv_number_tec -> code_obj
inv_number_meb -> code_obj
code_obj -> date, price
code_obj -> firm_inv, model_inv
code_obj -> firm_tec, model_tec
code_obj -> firm_meb, model_meb, dlina, width, height
id_spis -> data
id_spis -> inv_number_inv, reason_inv
id_spis -> inv_number_tec, reason_tec
id_spis -> inv_number_meb, reason_meb
Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city,
street, numstreet, numflat, dolgnost -> passport
num_room -> passport
num_zal -> inv_number_inv
num_p -> inv_number_tec
num_p -> inv_number_meb
passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country,
city, street, numstreet, numflat, dolgnost -> person
passport, staff_pl, number, status_pl -> player
pop_index, person_id, num_p -> populate
num_p, square, naznachenie -> pomeshenie
num_p, num_zal, type_zal -> zal
num_p, num_room -> room
tec_in, date_tec, num_p, inv_number_tec -> techno_in_pom
meb_in, date_meb, num_p, inv_number_meb -> meb_in_pom
inv_in_id, date_inv, num_p, inv_number_inv -> inv_in_zal
inv_number_inv, code_obj -> invenum_inv
inv_number_tec, code_obj -> invenum_tec
inv_number_meb, code_obj -> invenum_meb
code_obj, date, price -> arrival_object
code_obj, firm_inv, model_inv -> inventar
code_obj, firm_tec, model_tec -> techno
firm_meb, model_meb, dlina, width, height -> mebel
id_spis, data -> spisanie
id_spis, inv_number_inv, reason_inv -> out_inventar
id_spis, inv_number_tec, reason_tec -> out_techno
id_spis, inv_number_meb, reason_meb -> out_mebel
number -> passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost
status_c -> passport, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost
passport, staff_c, status_c -> coach
2. f=g \ passport -> staff_pl, number, status_pl
Проверяем: f |= passport -> staff_pl, number, status_pl
[passport]+f = passport, staff_c, status_c, fam, im, otch, pol, dateborn,
datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost,
person, coach
Нет => Множество ФЗ не изменяется
3. f=g \ passport -> staff_c, status_c
Проверяем: f |= passport -> staff_c, status_c
[passport]+f = passport, staff_pl, number, status_pl, player, fam, im, otch,
pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet,
numflat, dolgnost, person
Нет => Множество ФЗ не изменяется
4. f=g \ pop_index -> person_id, num_p
Проверяем: f |= pop_index -> person_id, num_p
[pop_index]+f = pop_index
Нет => Множество ФЗ не изменяется
5. f=g \ num_p -> square, naznachenie
Проверяем: f |= num_p -> square, naznachenie
[num_p]+f = num_p, num_zal, type_zal, num_room, passport, staff_pl,
number, status_pl, staff_c, status_c, inv_number_inv, code_obj, date,
price, firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb,
dlina, width, height, inv_number_tec, inv_number_meb, player, zal, room,
invenum_inv, invenum_tec, invenum_meb, arrival_object, inventar,
techno, mebel, fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
6. f=g \ num_p -> num_zal, type_zal
Проверяем: f |= num_p -> num_zal, type_zal
[num_p]+f = num_p, square, naznachenie, num_room, passport, staff_pl,
number, status_pl, staff_c, status_c, inv_number_tec, code_obj, date,
price, firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb,
dlina, width, height, inv_number_meb, player, pomeshenie, room,
invenum_tec, invenum_meb, arrival_object, inventar, techno, mebel, fam,
im, otch, pol, dateborn, datevidachi, kemvidan, country, city, street,
numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
7. f=g \ num_p -> num_room
Проверяем: f |= num_p -> num_room
[num_p]+f = num_p, square, naznachenie, num_zal, type_zal,
inv_number_inv, code_obj, date, price, firm_inv, model_inv, firm_tec,
model_tec, firm_meb, model_meb, dlina, width, height, inv_number_tec,
inv_number_meb, pomeshenie, zal, invenum_inv, invenum_tec,
invenum_meb, arrival_object, inventar, techno, mebel
Нет => Множество ФЗ не изменяется
8. f=g \ tec_in -> date_tec, num_p, inv_number_tec
Проверяем: f |= tec_in -> date_tec, num_p, inv_number_tec
[tec_in]+f = tec_in
Нет => Множество ФЗ не изменяется
9. f=g \ meb_in -> date_meb, num_p, inv_number_meb
Проверяем: f |= meb_in -> date_meb, num_p, inv_number_meb
[meb_in]+f = meb_in
Нет => Множество ФЗ не изменяется
10. f=g \ inv_in_id -> date_inv, num_p, inv_number_inv
Проверяем: f |= inv_in_id -> date_inv, num_p, inv_number_inv
[inv_in_id]+f = inv_in_id
Нет => Множество ФЗ не изменяется
11. f=g \ inv_number_inv -> code_obj
Проверяем: f |= inv_number_inv -> code_obj
[inv_number_inv]+f = inv_number_inv
Нет => Множество ФЗ не изменяется
12. f=g \ inv_number_tec -> code_obj
Проверяем: f |= inv_number_tec -> code_obj
[inv_number_tec]+f = inv_number_tec
Нет => Множество ФЗ не изменяется
13. f=g \ inv_number_meb -> code_obj
Проверяем: f |= inv_number_meb -> code_obj
[inv_number_meb]+f = inv_number_meb
Нет => Множество ФЗ не изменяется
14. f=g \ code_obj -> date, price
Проверяем: f |= code_obj -> date, price
[code_obj]+f = code_obj, firm_inv, model_inv, firm_tec, model_tec,
firm_meb, model_meb, dlina, width, height, inventar, techno, mebel
Нет => Множество ФЗ не изменяется
15. f=g \ code_obj -> firm_inv, model_inv
Проверяем: f |= code_obj -> firm_inv, model_inv
[code_obj]+f = code_obj, date, price, firm_tec, model_tec, firm_meb,
model_meb, dlina, width, height, arrival_object, techno, mebel
Нет => Множество ФЗ не изменяется
16. f=g \ code_obj -> firm_tec, model_tec
Проверяем: f |= code_obj -> firm_tec, model_tec
[code_obj]+f = code_obj, date, price, firm_inv, model_inv, firm_meb,
model_meb, dlina, width, height, arrival_object, inventar, mebel
Нет => Множество ФЗ не изменяется
17. f=g \ code_obj -> firm_meb, model_meb, dlina, width, height
Проверяем: f |= code_obj -> firm_meb, model_meb, dlina, width, height
[code_obj]+f = code_obj, date, price, firm_inv, model_inv, firm_tec,
model_tec, arrival_object, inventar, techno
Нет => Множество ФЗ не изменяется
18. f=g \ id_spis -> data
Проверяем: f |= id_spis -> data
[id_spis]+f = id_spis, inv_number_inv, reason_inv, code_obj, date, price,
firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb, dlina,
width, height, inv_number_tec, reason_tec, inv_number_meb,
reason_meb, invenum_inv, invenum_tec, invenum_meb, arrival_object,
inventar, techno, mebel, out_inventar, out_techno, out_mebel
Нет => Множество ФЗ не изменяется
19. f=g \ id_spis -> inv_number_inv, reason_inv
Проверяем: f |= id_spis -> inv_number_inv, reason_inv
[id_spis]+f = id_spis, data, inv_number_tec, reason_tec, code_obj, date,
price, firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb,
dlina, width, height, inv_number_meb, reason_meb, invenum_tec,
invenum_meb, arrival_object, inventar, techno, mebel, spisanie,
out_techno, out_mebel
Нет => Множество ФЗ не изменяется
20. f=g \ id_spis -> inv_number_tec, reason_tec
Проверяем: f |= id_spis -> inv_number_tec, reason_tec
[id_spis]+f = id_spis, data, inv_number_inv, reason_inv, code_obj, date,
price, firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb,
dlina, width, height, inv_number_meb, reason_meb, invenum_inv,
invenum_meb, arrival_object, inventar, techno, mebel, spisanie,
out_inventar, out_mebel
Нет => Множество ФЗ не изменяется
21. f=g \ id_spis -> inv_number_meb, reason_meb
Проверяем: f |= id_spis -> inv_number_meb, reason_meb
[id_spis]+f = id_spis, data, inv_number_inv, reason_inv, code_obj, date,
price, firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb,
dlina, width, height, inv_number_tec, reason_tec, invenum_inv,
invenum_tec, arrival_object, inventar, techno, mebel, spisanie,
out_inventar, out_techno
Нет => Множество ФЗ не изменяется
22. f=g \ Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country,
city, street, numstreet, numflat, dolgnost -> passport
Проверяем: f |= Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost -> passport
[Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street,
numstreet, numflat, dolgnost]+f = Fam, Im, Otch, pol, dateborn,
datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost
Нет => Множество ФЗ не изменяется
23. f=g \ num_room -> passport
Проверяем: f |= num_room -> passport
[num_room]+f = num_room
Нет => Множество ФЗ не изменяется
24. f=g \ num_zal -> inv_number_inv
Проверяем: f |= num_zal -> inv_number_inv
[num_zal]+f = num_zal
Нет => Множество ФЗ не изменяется
25. f=g \ num_p -> inv_number_tec
Проверяем: f |= num_p -> inv_number_tec
[num_p]+f = num_p, square, naznachenie, num_zal, type_zal, num_room,
passport, staff_pl, number, status_pl, staff_c, status_c, inv_number_inv,
code_obj, date, price, firm_inv, model_inv, firm_tec, model_tec, firm_meb,
model_meb, dlina, width, height, inv_number_meb, player, pomeshenie,
zal, room, invenum_inv, invenum_meb, arrival_object, inventar, techno,
mebel, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country, city,
street, numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
26. f=g \ num_p -> inv_number_meb
Проверяем: f |= num_p -> inv_number_meb
[num_p]+f = num_p, square, naznachenie, num_zal, type_zal, num_room,
passport, staff_pl, number, status_pl, staff_c, status_c, inv_number_inv,
code_obj, date, price, firm_inv, model_inv, firm_tec, model_tec, firm_meb,
model_meb, dlina, width, height, inv_number_tec, player, pomeshenie, zal,
room, invenum_inv, invenum_tec, arrival_object, inventar, techno, mebel,
fam, im, otch, pol, dateborn, datevidachi, kemvidan, country, city, street,
numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
27. f=g \ passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost -> person
Проверяем: f |= passport, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost -> person
[passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country,
city, street, numstreet, numflat, dolgnost]+f = passport, fam, im, otch, pol,
dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat,
dolgnost, staff_pl, number, status_pl, staff_c, status_c, player, coach
Нет => Множество ФЗ не изменяется
28. f=g \ passport, staff_pl, number, status_pl -> player
Проверяем: f |= passport, staff_pl, number, status_pl -> player
[passport, staff_pl, number, status_pl]+f = passport, staff_pl, number,
status_pl, staff_c, status_c, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
29. f=g \ pop_index, person_id, num_p -> populate
Проверяем: f |= pop_index, person_id, num_p -> populate
[pop_index, person_id, num_p]+f = pop_index, person_id, num_p, square,
naznachenie, num_zal, type_zal, num_room, passport, staff_pl, number,
status_pl, staff_c, status_c, inv_number_inv, code_obj, date, price,
firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb, dlina,
width, height, inv_number_tec, inv_number_meb, player, pomeshenie, zal,
room, invenum_inv, invenum_tec, invenum_meb, arrival_object, inventar,
techno, mebel, fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
30. f=g \ num_p, square, naznachenie -> pomeshenie
Проверяем: f |= num_p, square, naznachenie -> pomeshenie
[num_p, square, naznachenie]+f = num_p, square, naznachenie, num_zal,
type_zal, num_room, passport, staff_pl, number, status_pl, staff_c,
status_c, inv_number_inv, code_obj, date, price, firm_inv, model_inv,
firm_tec, model_tec, firm_meb, model_meb, dlina, width, height,
inv_number_tec, inv_number_meb, player, zal, room, invenum_inv,
invenum_tec, invenum_meb, arrival_object, inventar, techno, mebel, fam,
im, otch, pol, dateborn, datevidachi, kemvidan, country, city, street,
numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
31. f=g \ num_p, num_zal, type_zal -> zal
Проверяем: f |= num_p, num_zal, type_zal -> zal
[num_p, num_zal, type_zal]+f = num_p, num_zal, type_zal, square,
naznachenie, num_room, passport, staff_pl, number, status_pl, staff_c,
status_c, inv_number_inv, code_obj, date, price, firm_inv, model_inv,
firm_tec, model_tec, firm_meb, model_meb, dlina, width, height,
inv_number_tec, inv_number_meb, player, pomeshenie, room,
invenum_inv, invenum_tec, invenum_meb, arrival_object, inventar,
techno, mebel, fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
32. f=g \ num_p, num_room -> room
Проверяем: f |= num_p, num_room -> room
[num_p, num_room]+f = num_p, num_room, square, naznachenie,
num_zal, type_zal, passport, staff_pl, number, status_pl, staff_c, status_c,
inv_number_inv, code_obj, date, price, firm_inv, model_inv, firm_tec,
model_tec, firm_meb, model_meb, dlina, width, height, inv_number_tec,
inv_number_meb, player, pomeshenie, zal, invenum_inv, invenum_tec,
invenum_meb, arrival_object, inventar, techno, mebel, fam, im, otch, pol,
dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat,
dolgnost, person, coach
Нет => Множество ФЗ не изменяется
33. f=g \ tec_in, date_tec, num_p, inv_number_tec -> techno_in_pom
Проверяем: f |= tec_in, date_tec, num_p, inv_number_tec ->
techno_in_pom
[tec_in, date_tec, num_p, inv_number_tec]+f = tec_in, date_tec, num_p,
inv_number_tec, square, naznachenie, num_zal, type_zal, num_room,
code_obj, date, price, firm_inv, model_inv, firm_tec, model_tec, firm_meb,
model_meb, dlina, width, height, passport, staff_pl, number, status_pl,
staff_c, status_c, inv_number_inv, inv_number_meb, player, pomeshenie,
zal, room, invenum_inv, invenum_tec, invenum_meb, arrival_object,
inventar, techno, mebel, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost, person, coach
Нет => Множество ФЗ не изменяется
34. f=g \ meb_in, date_meb, num_p, inv_number_meb -> meb_in_pom
Проверяем: f |= meb_in, date_meb, num_p, inv_number_meb ->
meb_in_pom
[meb_in, date_meb, num_p, inv_number_meb]+f = meb_in, date_meb,
num_p, inv_number_meb, square, naznachenie, num_zal, type_zal,
num_room, code_obj, date, price, firm_inv, model_inv, firm_tec, model_tec,
firm_meb, model_meb, dlina, width, height, passport, staff_pl, number,
status_pl, staff_c, status_c, inv_number_inv, inv_number_tec, player,
pomeshenie, zal, room, invenum_inv, invenum_tec, invenum_meb,
arrival_object, inventar, techno, mebel, fam, im, otch, pol, dateborn,
datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost,
person, coach
Нет => Множество ФЗ не изменяется
35. f=g \ inv_in_id, date_inv, num_p, inv_number_inv -> inv_in_zal
Проверяем: f |= inv_in_id, date_inv, num_p, inv_number_inv -> inv_in_zal
[inv_in_id, date_inv, num_p, inv_number_inv]+f = inv_in_id, date_inv,
num_p, inv_number_inv, square, naznachenie, num_zal, type_zal,
num_room, code_obj, date, price, firm_inv, model_inv, firm_tec, model_tec,
firm_meb, model_meb, dlina, width, height, passport, staff_pl, number,
status_pl, staff_c, status_c, inv_number_tec, inv_number_meb, player,
pomeshenie, zal, room, invenum_inv, invenum_tec, invenum_meb,
arrival_object, inventar, techno, mebel, fam, im, otch, pol, dateborn,
datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost,
person, coach
Нет => Множество ФЗ не изменяется
36. f=g \ inv_number_inv, code_obj -> invenum_inv
Проверяем: f |= inv_number_inv, code_obj -> invenum_inv
[inv_number_inv, code_obj]+f = inv_number_inv, code_obj, date, price,
firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb, dlina,
width, height, arrival_object, inventar, techno, mebel
Нет => Множество ФЗ не изменяется
37. f=g \ inv_number_tec, code_obj -> invenum_tec
Проверяем: f |= inv_number_tec, code_obj -> invenum_tec
[inv_number_tec, code_obj]+f = inv_number_tec, code_obj, date, price,
firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb, dlina,
width, height, arrival_object, inventar, techno, mebel
Нет => Множество ФЗ не изменяется
38. f=g \ inv_number_meb, code_obj -> invenum_meb
Проверяем: f |= inv_number_meb, code_obj -> invenum_meb
[inv_number_meb, code_obj]+f = inv_number_meb, code_obj, date, price,
firm_inv, model_inv, firm_tec, model_tec, firm_meb, model_meb, dlina,
width, height, arrival_object, inventar, techno, mebel
Нет => Множество ФЗ не изменяется
39. f=g \ code_obj, date, price -> arrival_object
Проверяем: f |= code_obj, date, price -> arrival_object
[code_obj, date, price]+f = code_obj, date, price, firm_inv, model_inv,
firm_tec, model_tec, firm_meb, model_meb, dlina, width, height, inventar,
techno, mebel
Нет => Множество ФЗ не изменяется
40. f=g \ code_obj, firm_inv, model_inv -> inventar
Проверяем: f |= code_obj, firm_inv, model_inv -> inventar
[code_obj, firm_inv, model_inv]+f = code_obj, firm_inv, model_inv, date,
price, firm_tec, model_tec, firm_meb, model_meb, dlina, width, height,
arrival_object, techno, mebel
Нет => Множество ФЗ не изменяется
41. f=g \ code_obj, firm_tec, model_tec -> techno
Проверяем: f |= code_obj, firm_tec, model_tec -> techno
[code_obj, firm_tec, model_tec]+f = code_obj, firm_tec, model_tec, date,
price, firm_inv, model_inv, firm_meb, model_meb, dlina, width, height,
arrival_object, inventar, mebel
Нет => Множество ФЗ не изменяется
42. f=g \ firm_meb, model_meb, dlina, width, height -> mebel
Проверяем: f |= firm_meb, model_meb, dlina, width, height -> mebel
[firm_meb, model_meb, dlina, width, height]+f = firm_meb, model_meb,
dlina, width, height
Нет => Множество ФЗ не изменяется
43. f=g \ id_spis, data -> spisanie
Проверяем: f |= id_spis, data -> spisanie
[id_spis, data]+f = id_spis, data, inv_number_inv, reason_inv, code_obj,
date, price, firm_inv, model_inv, firm_tec, model_tec, firm_meb,
model_meb, dlina, width, height, inv_number_tec, reason_tec,
inv_number_meb, reason_meb, invenum_inv, invenum_tec, invenum_meb,
arrival_object, inventar, techno, mebel, out_inventar, out_techno,
out_mebel
Нет => Множество ФЗ не изменяется
44. f=g \ id_spis, inv_number_inv, reason_inv -> out_inventar
Проверяем: f |= id_spis, inv_number_inv, reason_inv -> out_inventar
[id_spis, inv_number_inv, reason_inv]+f = id_spis, inv_number_inv,
reason_inv, code_obj, date, price, firm_inv, model_inv, firm_tec,
model_tec, firm_meb, model_meb, dlina, width, height, data,
inv_number_tec, reason_tec, inv_number_meb, reason_meb,
invenum_inv, invenum_tec, invenum_meb, arrival_object, inventar,
techno, mebel, spisanie, out_techno, out_mebel
Нет => Множество ФЗ не изменяется
45. f=g \ id_spis, inv_number_tec, reason_tec -> out_techno
Проверяем: f |= id_spis, inv_number_tec, reason_tec -> out_techno
[id_spis, inv_number_tec, reason_tec]+f = id_spis, inv_number_tec,
reason_tec, code_obj, date, price, firm_inv, model_inv, firm_tec,
model_tec, firm_meb, model_meb, dlina, width, height, data,
inv_number_inv, reason_inv, inv_number_meb, reason_meb, invenum_inv,
invenum_tec, invenum_meb, arrival_object, inventar, techno, mebel,
spisanie, out_inventar, out_mebel
Нет => Множество ФЗ не изменяется
46. f=g \ id_spis, inv_number_meb, reason_meb -> out_mebel
Проверяем: f |= id_spis, inv_number_meb, reason_meb -> out_mebel
[id_spis, inv_number_meb, reason_meb]+f = id_spis, inv_number_meb,
reason_meb, code_obj, date, price, firm_inv, model_inv, firm_tec,
model_tec, firm_meb, model_meb, dlina, width, height, data,
inv_number_inv, reason_inv, inv_number_tec, reason_tec, invenum_inv,
invenum_tec, invenum_meb, arrival_object, inventar, techno, mebel,
spisanie, out_inventar, out_techno
Нет => Множество ФЗ не изменяется
47. f=g \ number -> passport, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost
Проверяем: f |= number -> passport, fam, im, otch, pol, dateborn,
datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost
[number]+f = number
Нет => Множество ФЗ не изменяется
48. f=g \ status_c -> passport, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost
Проверяем: f |= status_c -> passport, fam, im, otch, pol, dateborn,
datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost
[status_c]+f = status_c
Нет => Множество ФЗ не изменяется
49. f=g \ passport, staff_c, status_c -> coach
Проверяем: f |= passport, staff_c, status_c -> coach
[passport, staff_c, status_c]+f = passport, staff_c, status_c, staff_pl,
number, status_pl, player, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost, person
Нет => Множество ФЗ не изменяется
Неизбыточное покрытие
Результирующее множество:
passport -> staff_pl, number, status_pl
passport -> staff_c, status_c
pop_index -> person_id, num_p
num_p -> square, naznachenie
num_p -> num_zal, type_zal
num_p -> num_room
tec_in -> date_tec, num_p, inv_number_tec
meb_in -> date_meb, num_p, inv_number_meb
inv_in_id -> date_inv, num_p, inv_number_inv
inv_number_inv -> code_obj
inv_number_tec -> code_obj
inv_number_meb -> code_obj
code_obj -> date, price
code_obj -> firm_inv, model_inv
code_obj -> firm_tec, model_tec
code_obj -> firm_meb, model_meb, dlina, width, height
id_spis -> data
id_spis -> inv_number_inv, reason_inv
id_spis -> inv_number_tec, reason_tec
id_spis -> inv_number_meb, reason_meb
Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city,
street, numstreet, numflat, dolgnost -> passport
num_room -> passport
num_zal -> inv_number_inv
num_p -> inv_number_tec
num_p -> inv_number_meb
passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan, country,
city, street, numstreet, numflat, dolgnost -> person
passport, staff_pl, number, status_pl -> player
pop_index, person_id, num_p -> populate
num_p, square, naznachenie -> pomeshenie
num_p, num_zal, type_zal -> zal
num_p, num_room -> room
tec_in, date_tec, num_p, inv_number_tec -> techno_in_pom
meb_in, date_meb, num_p, inv_number_meb -> meb_in_pom
inv_in_id, date_inv, num_p, inv_number_inv -> inv_in_zal
inv_number_inv, code_obj -> invenum_inv
inv_number_tec, code_obj -> invenum_tec
inv_number_meb, code_obj -> invenum_meb
code_obj, date, price -> arrival_object
code_obj, firm_inv, model_inv -> inventar
code_obj, firm_tec, model_tec -> techno
firm_meb, model_meb, dlina, width, height -> mebel
id_spis, data -> spisanie
id_spis, inv_number_inv, reason_inv -> out_inventar
id_spis, inv_number_tec, reason_tec -> out_techno
id_spis, inv_number_meb, reason_meb -> out_mebel
number -> passport, fam, im, otch, pol, dateborn, datevidachi, kemvidan,
country, city, street, numstreet, numflat, dolgnost
status_c -> passport, fam, im, otch, pol, dateborn, datevidachi,
kemvidan, country, city, street, numstreet, numflat, dolgnost
passport, staff_c, status_c ->coach