Главная Учебники - Разные Лекции (разные) - часть 33
Министерство образования и науки Российской Федерации Курский Государственный Технический Университет Кафедра ПО ВТ по дисциплине: “Базы данных” Тема: “ Графические редакторы (пакеты трехмерного моделирования)” Выполнил: студент гр. ПО-21 Чельцов Е. О. Проверил: доцент Белов В. Г. К У Р С К 2 0 0 8 1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ 1.1 Основание для разработки 1.2 Задание 2 ТЕХНИЧЕСКИЙ ПРОЕКТ 2.1 Описание предметной области 2.2 Словарь понятий и терминов 2.3 Первый вариант ER-диаграммы: 2.4 Построение функциональных зависимостей: 2.5 Синтез схемы базы данных на основаниифункциональных зависимостей 2.5.1 Построение неизбыточного покрытия 2.5.2 Построение леворедуцированного покрытия 2.5.3 Построение праворедуцированного покрытия 2.5.4 Построение классов эквивалентностей 2.5.5 Построение минимального покрытия 2.5.6 Получение минимального кольцевого редуцированного покрытия Определение CF-зависимостей по классам эквивалентности Минимальное кольцевое покрытие 2.6. Логическая модель предметной области 2.7 Уточненная концептуальная модель 3 ПОСТРОЕНИЕ ЗАПРОСОВ Спроектировать базу данных, содержащую информацию о графических редакторах, а именно пакетах трехмерного моделирования
. Описать предметную область, разработать словарь понятий и терминов, построить систему функциональных зависимостей, ER-диаграмму. Синтезировать схему базы данных на основании функциональных зависимостей (построение неизбыточного покрытия, построение леворедуцированного неизбыточного покрытия, построение праворедуцированного неизбыточного покрытия, построение классов эквивалентностей, построение минимального покрытия). Построить уточненную концептуальную модель в виде ER-диаграммы, запросы предметной области. Записать запросы на языке SQL. На данный момент существует довольно много средств трехмерного моделирования — начиная от простейших программ, типа “Ultimate Unwrap3D”, предназначенных для создания простейших сцен и зачастую распространяемых бесплатно, и заканчивая мощными коммерческими пакетами моделирования, типа “Maya”, предназначенных для создания реалистичных изображений и анимации. В Интернете существуют сайты, на которых хранятся большие коллекции файлов (сцен) для такого рода программ. Каждая сцена имеет свой идентификационный номер и характеризуется следующими параметрами: -название сцены; -количество полигонов в сцене; -размер файла; -дата создания; -количество объектов; -количество источников света; -количество камер; -комментарии. При создании сцены используется модуль просчета изображения — рендер, который характеризуется: -поддержка материалов; -условия распространения; К каждой сцене прилагается пакет текстур, который характеризуется: -количеством текстур; -типом архива. Сцены бывают статические и с содержанием анимации. Сцена с анимацией имеет параметры: -наличие звука; -количество кадров; -описание анимации (раскадровка). Если при создании анимации использовалась сторонняя программа или плагин, то последовательность кадров будет содержаться в отдельном файле, с параметрами: -название файла анимации; -тип файла; -размер файла. Используемый плагин характеризуется: -тип; -условия распространения; -название. Программа, используемая при создании сцены, характеризуется: -название; -поддерживаемые форматы; -условия распространения. Характеристики производителя, используемого программного продукта: -название организации; -адрес электронной почты; -адрес сайта Интернет; -страна. Так же имеются сведение об авторе сцены: -полное имя или псевдоним; -адрес электронной почты; -адрес сайта Интернет; Каждый автор имеет свой идентификационный номер. 1-10:ходьба 11-20: бег 21-60: падение Тип файла анимации Размер файла анимации Идентификатор автора сцены Исходное множество функциональных зависимостей Полное множество атрибутов предметной области Z={
man_name, man_email, man_www, man_country, edit_name, supp_formats, edit_conditions, render_name, materials, ren_conditions, plug_name, plug_conditions, plug_type, scene_id, scene_name, size_polys, size_kb, created, comments, packname, amount, archoiver_type, objects, lights, cameras, anim_id, sound, frames, raskadrovka, type, name_anifile, size_kb_ani, author_id, author_name, 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 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 scene_id -> render_name render_name -> man_name plug_name -> man_name edit_name -> man_name 1. f=g \ man_name -> man_email, man_www, man_country Проверяем: f |= man_name -> man_email, man_www, man_country [man_name]+f = man_name Нет => Множество ФЗ не изменяется 2. f=g \ edit_name -> supp_formats, man_name, edit_conditions Проверяем: f |= edit_name -> supp_formats, man_name, edit_conditions [edit_name]+f = edit_name, man_name, man_email, man_www, man_country Нет => Множество ФЗ не изменяется 3. f=g \ render_name -> man_name, ren_conditions, materials Проверяем: f |= render_name -> man_name, ren_conditions, materials [render_name]+f = render_name, man_name, man_email, man_www, man_country Нет => Множество ФЗ не изменяется 4. f=g \ plug_name -> man_name, plug_conditions, plug_type Проверяем: f |= plug_name -> man_name, plug_conditions, plug_type [plug_name]+f = plug_name, man_name, man_email, man_www, man_country Нет => Множество ФЗ не изменяется 5. f=g \ packname, scene_id -> amount, archiver_type Проверяем: f |= packname, scene_id -> amount, archiver_type [packname, scene_id]+f = packname, scene_id, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, supp_formats, man_name, edit_conditions, man_email, man_www, man_country, ren_conditions, materials, objects, lights, cameras, author_name, author_email, author_www Нет => Множество ФЗ не изменяется 6. f=g \ scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments Проверяем: f |= scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments [scene_id]+f = scene_id, objects, lights, cameras, render_name, man_name, ren_conditions, materials, man_email, man_www, man_country Нет => Множество ФЗ не изменяется 7. f=g \ scene_id -> objects, lights, cameras Проверяем: f |= scene_id -> objects, lights, cameras [scene_id]+f = scene_id, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, supp_formats, man_name, edit_conditions, man_email, man_www, man_country, ren_conditions, materials, author_name, author_email, author_www Нет => Множество ФЗ не изменяется 8. f=g \ scene_id, anim_id -> sound Проверяем: f |= scene_id, anim_id -> sound [scene_id, anim_id]+f = scene_id, anim_id, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, supp_formats, man_name, edit_conditions, man_email, man_www, man_country, ren_conditions, materials, objects, lights, cameras, frames, raskadrovka, author_name, author_email, author_www Нет => Множество ФЗ не изменяется 9. f=g \ scene_id, anim_id -> frames Проверяем: f |= scene_id, anim_id -> frames [scene_id, anim_id]+f = scene_id, anim_id, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, supp_formats, man_name, edit_conditions, man_email, man_www, man_country, ren_conditions, materials, objects, lights, cameras, sound, raskadrovka, author_name, author_email, author_www Нет => Множество ФЗ не изменяется 10. f=g \ scene_id, anim_id -> raskadrovka Проверяем: f |= scene_id, anim_id -> raskadrovka [scene_id, anim_id]+f = scene_id, anim_id, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, supp_formats, man_name, edit_conditions, man_email, man_www, man_country, ren_conditions, materials, objects, lights, cameras, sound, frames, author_name, author_email, author_www Нет => Множество ФЗ не изменяется 11. f=g \ author_id -> author_name, author_email, author_www Проверяем: f |= author_id -> author_name, author_email, author_www [author_id]+f = author_id Нет => Множество ФЗ не изменяется 12. f=g \ scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani Проверяем: f |= scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani [scene_id, anim_id, plug_name, type]+f = scene_id, anim_id, plug_name, type, man_name, plug_conditions, plug_type, man_email, man_www, man_country, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, supp_formats, edit_conditions, ren_conditions, materials, objects, lights, cameras, sound, frames, raskadrovka, author_name, author_email, author_www Нет => Множество ФЗ не изменяется 13. f=g \ man_email -> man_name Проверяем: f |= man_email -> man_name [man_email]+f = man_email Нет => Множество ФЗ не изменяется 14. f=g \ man_www -> man_name Проверяем: f |= man_www -> man_name [man_www]+f = man_www Нет => Множество ФЗ не изменяется 15. f=g \ author_email -> author_id Проверяем: f |= author_email -> author_id [author_email]+f = author_email Нет => Множество ФЗ не изменяется 16. f=g \ author_www -> author_id Проверяем: f |= author_www -> author_id [author_www]+f = author_www Нет => Множество ФЗ не изменяется 17. f=g \ scene_id -> render_name Проверяем: f |= scene_id -> render_name [scene_id]+f = scene_id, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, supp_formats, man_name, edit_conditions, man_email, man_www, man_country, ren_conditions, materials, objects, lights, cameras, author_name, author_email, author_www Да => g=f 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 render_name -> man_name plug_name -> man_name edit_name -> man_name 18. f=g \ render_name -> man_name Проверяем: f |= render_name -> man_name [render_name]+f = render_name, man_name, ren_conditions, materials, man_email, man_www, man_country Да => g=f 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 plug_name -> man_name edit_name -> man_name 19. f=g \ plug_name -> man_name Проверяем: f |= plug_name -> man_name [plug_name]+f = plug_name, man_name, plug_conditions, plug_type, man_email, man_www, man_country Да => g=f 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 edit_name -> man_name 20. f=g \ edit_name -> man_name Проверяем: f |= edit_name -> man_name [edit_name]+f = edit_name, supp_formats, man_name, edit_conditions, man_email, man_www, man_country Да => g=f 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 scene_id -> render_name render_name -> man_name plug_name -> man_name edit_name -> man_name 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. packname, scene_id -> amount, archiver_type 1.1. packname, scene_id -> amount, archiver_type Проверяем: g |= scene_id -> amount, archiver_type Нет => множество ФЗ не изменяется. 1.2. packname, scene_id -> amount, archiver_type Проверяем: g |= packname -> amount, archiver_type Нет => множество ФЗ не изменяется. 2. scene_id, anim_id -> sound 2.1. scene_id, anim_id -> sound Проверяем: g |= anim_id -> sound Нет => множество ФЗ не изменяется. 2.2. scene_id, anim_id -> sound Проверяем: g |= scene_id -> sound Нет => множество ФЗ не изменяется. 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 plug_name -> man_name, plug_conditions, plug_type packname, scene_id -> amount, archiver_type author_id -> author_email author_email -> author_www author_www -> author_id 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 Левая редукция или перенос в правую часть 1. Проверка CF-зависимости: ( man_name; man_email; man_www; ) -> man_country 1.1. Сформированная CF-зависимость: ( man_email; man_www; ) -> man_country, man_name Характеристические множества не эквивалентны 1.2. Сформированная CF-зависимость: ( man_name; man_www; ) -> man_country, man_email Характеристические множества не эквивалентны 1.3. Сформированная CF-зависимость: ( man_name; man_email; ) -> man_country, man_www Характеристические множества не эквивалентны 2. Проверка CF-зависимости: ( edit_name; ) -> supp_formats, man_name, edit_conditions 2.1. Сформированная CF-зависимость: ( ) -> supp_formats, man_name, edit_conditions, edit_name Характеристические множества не эквивалентны 3. Проверка CF-зависимости: ( render_name; ) -> man_name, ren_conditions, materials 3.1. Сформированная CF-зависимость: ( ) -> man_name, ren_conditions, materials, render_name Характеристические множества не эквивалентны 4. Проверка CF-зависимости: ( plug_name; ) -> man_name, plug_conditions, plug_type 4.1. Сформированная CF-зависимость: ( ) -> man_name, plug_conditions, plug_type, plug_name Характеристические множества не эквивалентны 5. Проверка CF-зависимости: ( packname, scene_id; ) -> amount, archiver_type 5.1. Сформированная CF-зависимость: ( scene_id; ) -> amount, archiver_type, packname Характеристические множества не эквивалентны 5.2. Сформированная CF-зависимость: ( packname; ) -> amount, archiver_type, scene_id Характеристические множества не эквивалентны 6. Проверка CF-зависимости: ( author_id; author_email; author_www; ) -> author_name 6.1. Сформированная CF-зависимость: ( author_email; author_www; ) -> author_name, author_id Характеристические множества не эквивалентны 6.2. Сформированная CF-зависимость: ( author_id; author_www; ) -> author_name, author_email Характеристические множества не эквивалентны 6.3. Сформированная CF-зависимость: ( author_id; author_email; ) -> author_name, author_www Характеристические множества не эквивалентны 7. Проверка CF-зависимости: ( scene_id, anim_id, plug_name, type; ) -> name_anifile, size_kb_ani 7.1. Сформированная CF-зависимость: ( anim_id, plug_name, type; ) -> name_anifile, size_kb_ani, scene_id Характеристические множества не эквивалентны 7.2. Сформированная CF-зависимость: ( scene_id, plug_name, type; ) -> name_anifile, size_kb_ani, anim_id Характеристические множества не эквивалентны 7.3. Сформированная CF-зависимость: ( scene_id, anim_id, type; ) -> name_anifile, size_kb_ani, plug_name Характеристические множества не эквивалентны 7.4. Сформированная CF-зависимость: ( scene_id, anim_id, plug_name; ) -> name_anifile, size_kb_ani, type Характеристические множества не эквивалентны 8. Проверка CF-зависимости: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras 8.1. Сформированная CF-зависимость: ( ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras, scene_id Характеристические множества не эквивалентны 9. Проверка CF-зависимости: ( scene_id, anim_id; ) -> sound, frames, raskadrovka 9.1. Сформированная CF-зависимость: ( anim_id; ) -> sound, frames, raskadrovka, scene_id Характеристические множества не эквивалентны 9.2. Сформированная CF-зависимость: ( scene_id; ) -> sound, frames, raskadrovka, anim_id Характеристические множества не эквивалентны Проверка покрытия на праворедуцированность 1. Проверка CF-зависимости: ( man_name; man_email; man_www; ) -> man_country 2.1. Сформированная CF-зависимость: ( man_name; man_email; man_www; ) Характеристические множества не эквивалентны 2. Проверка CF-зависимости: ( edit_name; ) -> supp_formats, man_name, edit_conditions 3.1. Сформированная CF-зависимость: ( edit_name; ) -> man_name, edit_conditions Характеристические множества не эквивалентны 3.2. Сформированная CF-зависимость: ( edit_name; ) -> supp_formats, edit_conditions Характеристические множества не эквивалентны 3.3. Сформированная CF-зависимость: ( edit_name; ) -> supp_formats, man_name Характеристические множества не эквивалентны 3. Проверка CF-зависимости: ( render_name; ) -> man_name, ren_conditions, materials 4.1. Сформированная CF-зависимость: ( render_name; ) -> ren_conditions, materials Характеристические множества не эквивалентны 4.2. Сформированная CF-зависимость: ( render_name; ) -> man_name, materials Характеристические множества не эквивалентны 4.3. Сформированная CF-зависимость: ( render_name; ) -> man_name, ren_conditions Характеристические множества не эквивалентны 4. Проверка CF-зависимости: ( plug_name; ) -> man_name, plug_conditions, plug_type 5.1. Сформированная CF-зависимость: ( plug_name; ) -> plug_conditions, plug_type Характеристические множества не эквивалентны 5.2. Сформированная CF-зависимость: ( plug_name; ) -> man_name, plug_type Характеристические множества не эквивалентны 5.3. Сформированная CF-зависимость: ( plug_name; ) -> man_name, plug_conditions Характеристические множества не эквивалентны 5. Проверка CF-зависимости: ( packname, scene_id; ) -> amount, archiver_type 6.1. Сформированная CF-зависимость: ( packname, scene_id; ) -> archiver_type Характеристические множества не эквивалентны 6.2. Сформированная CF-зависимость: ( packname, scene_id; ) -> amount Характеристические множества не эквивалентны 6. ПроверкаCF-зависимости: ( author_id; author_email; author_www; ) -> author_name 7.1. Сформированная CF-зависимость: ( author_id; author_email; author_www; ) Характеристические множества не эквивалентны 7. Проверка CF-зависимости: ( scene_id, anim_id, plug_name, type; ) -> name_anifile, size_kb_ani 8.1. Сформированная CF-зависимость: ( scene_id, anim_id, plug_name, type; ) -> size_kb_ani Характеристические множества не эквивалентны 8.2. Сформированная CF-зависимость: ( scene_id, anim_id, plug_name, type; ) -> name_anifile Характеристические множества не эквивалентны 8. Проверка CF-зависимости: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras 9.1. Сформированная CF-зависимость: ( scene_id; ) -> size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras Характеристические множества не эквивалентны 9.2. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras Характеристические множества не эквивалентны 9.3. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, author_id, render_name, size_kb, created, comments, objects, lights, cameras Характеристические множества не эквивалентны 9.4. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, render_name, size_kb, created, comments, objects, lights, cameras Характеристические множества не эквивалентны 9.5. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, size_kb, created, comments, objects, lights, cameras Характеристические множества не эквивалентны 9.6. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, created, comments, objects, lights, cameras Характеристические множества не эквивалентны 9.7. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, comments, objects, lights, cameras Характеристические множества не эквивалентны 9.8. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, objects, lights, cameras Характеристические множества не эквивалентны 9.9. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, lights, cameras Характеристические множества не эквивалентны 9.10. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, cameras Характеристические множества не эквивалентны 9.11. Сформированная CF-зависимость: ( scene_id; ) -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights Характеристические множества не эквивалентны 9. Проверка CF-зависимости: ( scene_id, anim_id; ) -> sound, frames, raskadrovka 10.1. Сформированная CF-зависимость: ( scene_id, anim_id; ) -> frames, raskadrovka Характеристические множества не эквивалентны 10.2. Сформированная CF-зависимость: ( scene_id, anim_id; ) -> sound, raskadrovka Характеристические множества не эквивалентны 10.3. Сформированная CF-зависимость: ( scene_id, anim_id; ) -> sound, frames Характеристические множества не эквивалентны Минимальное редуцированное кольцевое покрытие C ( 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 plug_name -> man_name, plug_conditions, plug_type packname, scene_id -> amount, archiver_type author_id -> author_email author_email -> author_www author_www -> author_id 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 R0 = ( man_name, man_email, man_www, man_country ) K0 = { man_name, man_email, man_www } R1 = ( edit_name, supp_formats, man_name, edit_conditions ) K1 = { edit_name } R2 = ( render_name, man_name, ren_conditions, materials ) K2 = { render_name } R3 = ( plug_name, man_name, plug_conditions, plug_type ) K3 = { plug_name } R4 = ( packname, scene_id, amount, archiver_type ) K4 = { packname, scene_id } R5 = ( author_id, author_email, author_www, author_name ) K5 = { author_id, author_email, author_www } R6 = ( scene_id, anim_id, plug_name, type, name_anifile, size_kb_ani ) K6 = { scene_id, anim_id, plug_name, type } R7 = ( scene_id, scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, cameras ) K7 = { scene_id } R8 = ( scene_id, anim_id, sound, frames, raskadrovka ) K8 = { scene_id, anim_id }
3
ПОСТРОЕНИЕ ЗАПРОСОВ 1. Выбрать все сцены, созданные 20.03.05 SELECT scene_id FROM 3dscene WHERE(created=”20.03.05’)
|