3. scene_id, anim_id -> frames
3.1. scene_id, anim_id -> frames
Проверяем: g |= anim_id -> frames
Нет => множество ФЗ не изменяется.
3.2. scene_id, anim_id -> frames
Проверяем: g |= scene_id -> frames
Нет => множество ФЗ не изменяется.
4. scene_id, anim_id -> raskadrovka
4.1. scene_id, anim_id -> raskadrovka
Проверяем: g |= anim_id -> raskadrovka
Нет => множество ФЗ не изменяется.
4.2. scene_id, anim_id -> raskadrovka
Проверяем: g |= scene_id -> raskadrovka
Нет => множество ФЗ не изменяется.
5. scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
5.1. scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
Проверяем: g |= anim_id, plug_name, type -> name_anifile, size_kb_ani
Нет => множество ФЗ не изменяется.
5.2. scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
Проверяем: g |= scene_id, plug_name, type -> name_anifile, size_kb_ani
Нет => множество ФЗ не изменяется.
5.3. scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
Проверяем: g |= scene_id, anim_id, type -> name_anifile, size_kb_ani
Нет => множество ФЗ не изменяется.
5.4. scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
Проверяем: g |= scene_id, anim_id, plug_name -> name_anifile, size_kb_ani
Нет => множество ФЗ не изменяется.
Леворедуцированное покрытие
g:
man_name -> man_email, man_www, man_country
edit_name -> supp_formats, man_name, edit_conditions
render_name -> man_name, ren_conditions, materials
plug_name -> man_name, plug_conditions, plug_type
packname, scene_id -> amount, archiver_type
scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments
scene_id -> objects, lights, cameras
scene_id, anim_id -> sound
scene_id, anim_id -> frames
scene_id, anim_id -> raskadrovka
author_id -> author_name, author_email, author_www
scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
man_email -> man_name
man_www -> man_name
author_email -> author_id
author_www -> author_id
g:
man_name -> man_email, man_www, man_country
edit_name -> supp_formats, man_name, edit_conditions
render_name -> man_name, ren_conditions, materials
plug_name -> man_name, plug_conditions, plug_type
packname, scene_id -> amount, archiver_type
scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments
scene_id -> objects, lights, cameras
scene_id, anim_id -> sound
scene_id, anim_id -> frames
scene_id, anim_id -> raskadrovka
author_id -> author_name, author_email, author_www
scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
man_email -> man_name
man_www -> man_name
author_email -> author_id
author_www -> author_id
1. man_name -> man_email, man_www, man_country
1.1. Если удаляем man_email
Проверяем: f |= man_name -> man_email
Нет => множество ФЗ не изменяется.
1.2. Если удаляем man_www
Проверяем: f |= man_name -> man_www
Нет => множество ФЗ не изменяется.
1.3. Если удаляем man_country
Проверяем: f |= man_name -> man_country
Нет => множество ФЗ не изменяется.
2. edit_name -> supp_formats, man_name, edit_conditions
2.1. Если удаляем supp_formats
Проверяем: f |= edit_name -> supp_formats
Нет => множество ФЗ не изменяется.
2.2. Если удаляем man_name
Проверяем: f |= edit_name -> man_name
Нет => множество ФЗ не изменяется.
2.3. Если удаляем edit_conditions
Проверяем: f |= edit_name -> edit_conditions
Нет => множество ФЗ не изменяется.
3. render_name -> man_name, ren_conditions, materials
3.1. Если удаляем man_name
Проверяем: f |= render_name -> man_name
Нет => множество ФЗ не изменяется.
3.2. Если удаляем ren_conditions
Проверяем: f |= render_name -> ren_conditions
Нет => множество ФЗ не изменяется.
3.3. Если удаляем materials
Проверяем: f |= render_name -> materials
Нет => множество ФЗ не изменяется.
4. plug_name -> man_name, plug_conditions, plug_type
4.1. Если удаляем man_name
Проверяем: f |= plug_name -> man_name
Нет => множество ФЗ не изменяется.
4.2. Если удаляем plug_conditions
Проверяем: f |= plug_name -> plug_conditions
Нет => множество ФЗ не изменяется.
4.3. Если удаляем plug_type
Проверяем: f |= plug_name -> plug_type
Нет => множество ФЗ не изменяется.
5. packname, scene_id -> amount, archiver_type
5.1. Если удаляем amount
Проверяем: f |= packname, scene_id -> amount
Нет => множество ФЗ не изменяется.
5.2. Если удаляем archiver_type
Проверяем: f |= packname, scene_id -> archiver_type
Нет => множество ФЗ не изменяется.
6. scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments
6.1. Если удаляем scene_name
Проверяем: f |= scene_id -> scene_name
Нет => множество ФЗ не изменяется.
6.2. Если удаляем size_polys
Проверяем: f |= scene_id -> size_polys
Нет => множество ФЗ не изменяется.
6.3. Если удаляем edit_name
Проверяем: f |= scene_id -> edit_name
Нет => множество ФЗ не изменяется.
6.4. Если удаляем author_id
Проверяем: f |= scene_id -> author_id
Нет => множество ФЗ не изменяется.
6.5. Если удаляем render_name
Проверяем: f |= scene_id -> render_name
Нет => множество ФЗ не изменяется.
6.6. Если удаляем size_kb
Проверяем: f |= scene_id -> size_kb
Нет => множество ФЗ не изменяется.
6.7. Если удаляем created
Проверяем: f |= scene_id -> created
Нет => множество ФЗ не изменяется.
6.8. Если удаляем comments
Проверяем: f |= scene_id -> comments
Нет => множество ФЗ не изменяется.
7. scene_id -> objects, lights, cameras
7.1. Если удаляем objects
Проверяем: f |= scene_id -> objects
Нет => множество ФЗ не изменяется.
7.2. Если удаляем lights
Проверяем: f |= scene_id -> lights
Нет => множество ФЗ не изменяется.
7.3. Если удаляем cameras
Проверяем: f |= scene_id -> cameras
Нет => множество ФЗ не изменяется.
8. scene_id, anim_id -> sound
8.1. Если удаляем sound
Проверяем: f |= scene_id, anim_id -> sound
Нет => множество ФЗ не изменяется.
9. scene_id, anim_id -> frames
9.1. Если удаляем frames
Проверяем: f |= scene_id, anim_id -> frames
Нет => множество ФЗ не изменяется.
10. scene_id, anim_id -> raskadrovka
10.1. Если удаляем raskadrovka
Проверяем: f |= scene_id, anim_id -> raskadrovka
Нет => множество ФЗ не изменяется.
11. author_id -> author_name, author_email, author_www
11.1. Если удаляем author_name
Проверяем: f |= author_id -> author_name
Нет => множество ФЗ не изменяется.
11.2. Если удаляем author_email
Проверяем: f |= author_id -> author_email
Нет => множество ФЗ не изменяется.
11.3. Если удаляем author_www
Проверяем: f |= author_id -> author_www
Нет => множество ФЗ не изменяется.
12. scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
12.1. Если удаляем name_anifile
Проверяем: f |= scene_id, anim_id, plug_name, type -> name_anifile
Нет => множество ФЗ не изменяется.
12.2. Если удаляем size_kb_ani
Проверяем: f |= scene_id, anim_id, plug_name, type -> size_kb_ani
Нет => множество ФЗ не изменяется.
13. man_email -> man_name
13.1. Если удаляем man_name
Проверяем: f |= man_email -> man_name
Нет => множество ФЗ не изменяется.
14. man_www -> man_name
14.1. Если удаляем man_name
Проверяем: f |= man_www -> man_name
Нет => множество ФЗ не изменяется.
15. author_email -> author_id
15.1. Если удаляем author_id
Проверяем: f |= author_email -> author_id
Нет => множество ФЗ не изменяется.
16. author_www -> author_id
16.1. Если удаляем author_id
Проверяем: f |= author_www -> author_id
Нет => множество ФЗ не изменяется.
Удаление зависимостей вида X->
Праворедуцированное покрытие
g:
man_name -> man_email, man_www, man_country
edit_name -> supp_formats, man_name, edit_conditions
render_name -> man_name, ren_conditions, materials
plug_name -> man_name, plug_conditions, plug_type
packname, scene_id -> amount, archiver_type
scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments
scene_id -> objects, lights, cameras
scene_id, anim_id -> sound
scene_id, anim_id -> frames
scene_id, anim_id -> raskadrovka
author_id -> author_name, author_email, author_www
scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
man_email -> man_name
man_www -> man_name
author_email -> author_id
author_www -> author_id
1. Ef( man_name ):
man_name -> man_email, man_www, man_country
man_email -> man_name
man_www -> man_name
2. Ef( edit_name ):
edit_name -> supp_formats, man_name, edit_conditions
3. Ef( render_name ):
render_name -> man_name, ren_conditions, materials
4. Ef( plug_name ):
plug_name -> man_name, plug_conditions, plug_type
5. Ef( packname, scene_id ):
packname, scene_id -> amount, archiver_type
6. Ef( scene_id ):
scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments
scene_id -> objects, lights, cameras
7. Ef( scene_id, anim_id ):
scene_id, anim_id -> sound
scene_id, anim_id -> frames
scene_id, anim_id -> raskadrovka
8. Ef( author_id ):
author_id -> author_name, author_email, author_www
author_email -> author_id
author_www -> author_id
9. Ef( scene_id, anim_id, plug_name, type ):
scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
1. Проверка: f \ Ef(man_name) |= man_name -> man_email?
Нет => множество ФЗ не изменяется.
2. Проверка: f \ Ef(man_name) |= man_name -> man_www?
Нет => множество ФЗ не изменяется.
3. Проверка: f \ Ef(man_name) |= man_email -> man_www?
Нет => множество ФЗ не изменяется.
4. Проверка: f \ Ef(scene_id) |= scene_id -> scene_id?
Да => заменяем scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments и scene_id -> objects, lights, cameras на scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras.
5. Проверка: f \ Ef(scene_id, anim_id) |= scene_id, anim_id -> scene_id, anim_id?
Да => заменяем scene_id, anim_id -> sound и scene_id, anim_id -> frames на scene_id, anim_id -> sound, frames.
6. Проверка: f \ Ef(scene_id, anim_id) |= scene_id, anim_id -> scene_id, anim_id?
Да => заменяем scene_id, anim_id -> sound, frames и scene_id, anim_id -> raskadrovka на scene_id, anim_id -> sound, frames, raskadrovka.
7. Проверка: f \ Ef(author_id) |= author_id -> author_email?
Нет => множество ФЗ не изменяется.
8. Проверка: f \ Ef(author_id) |= author_id -> author_www?
Нет => множество ФЗ не изменяется.
9. Проверка: f \ Ef(author_id) |= author_email -> author_www?
Нет => множество ФЗ не изменяется.
Редуцированноеминимальноепокрытие
g:
man_name -> man_email, man_www, man_country
edit_name -> supp_formats, man_name, edit_conditions
render_name -> man_name, ren_conditions, materials
plug_name -> man_name, plug_conditions, plug_type
packname, scene_id -> amount, archiver_type
author_id -> author_name, author_email, author_www
scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani
man_email -> man_name
man_www -> man_name
author_email -> author_id
author_www -> author_id
scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras
scene_id, anim_id -> sound, frames, raskadrovka
( man_name; man_email; man_www; ) -> man_country
( edit_name; ) -> supp_formats, man_name, edit_conditions
( render_name; ) -> man_name, ren_conditions, materials
( plug_name; ) -> man_name, plug_conditions, plug_type
( packname, scene_id; ) -> amount, archiver_type
( author_id; author_email; author_www; ) -> author_name
( scene_id, anim_id, plug_name, type; ) -> name_anifile, size_kb_ani
( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras
( scene_id, anim_id; ) -> sound, frames, raskadrovka
Получение кольцевого минимального
редуцированного покрытия
Естественное характеристическое множество
для кольцевого покрытия
f(C):
man_name -> man_email
man_email -> man_www
man_www -> man_name
man_www -> man_country
edit_name -> supp_formats, man_name, edit_conditions
render_name -> man_name, ren_conditions, materials