|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Графические редакторы (пакеты трехмерного моделирования)Графические редакторы (пакеты трехмерного моделирования)Министерство образования и науки Российской Федерации Курский Государственный Технический Университет Кафедра ПО ВТ КУРСОВАЯ РАБОТА по дисциплине: “Базы данных” Тема: “ Графические редакторы (пакеты трехмерного моделирования)” Выполнил: студент гр. ПО-21 Чельцов Е. О. Проверил: доцент Белов В. Г. К У Р С К 2 0 0 8 СОДЕРЖАНИЕ
Необходимо спроектировать и разработать базу данных, обеспечивающую ввод, хранение и обработку информации о графических редакторах, а именно пакетах трехмерного моделирования. Основанием для разработки послужило задание на курсовое проектирование по дисциплине “Базы данных”. 1.2 ЗаданиеСпроектировать базу данных, содержащую информацию о графических редакторах, а именно пакетах трехмерного моделирования. Описать предметную область, разработать словарь понятий и терминов, построить систему функциональных зависимостей, ER-диаграмму. Синтезировать схему базы данных на основании функциональных зависимостей (построение неизбыточного покрытия, построение леворедуцированного неизбыточного покрытия, построение праворедуцированного неизбыточного покрытия, построение классов эквивалентностей, построение минимального покрытия). Построить уточненную концептуальную модель в виде ER-диаграммы, запросы предметной области. Записать запросы на языке SQL.2.ТЕХНИЧЕСКИЙ ПРОЕКТ2.1 Описание предметной областиВ настоящее время большая часть новых компьютерных технологий ориентированна на сферу развлечений. Трехмерная графика является её наиболее интересной составляющей. Она используется в киноиндустрии, в индустрии компьютерных игр, в области проектирования и т.д.На данный момент существует довольно много средств трехмерного моделирования -- начиная от простейших программ, типа “Ultimate Unwrap3D”, предназначенных для создания простейших сцен и зачастую распространяемых бесплатно, и заканчивая мощными коммерческими пакетами моделирования, типа “Maya”, предназначенных для создания реалистичных изображений и анимации.В Интернете существуют сайты, на которых хранятся большие коллекции файлов (сцен) для такого рода программ. Каждая сцена имеет свой идентификационный номер и характеризуется следующими параметрами:-название сцены;-количество полигонов в сцене;-размер файла;-дата создания;-количество объектов;-количество источников света;-количество камер;-комментарии.При создании сцены используется модуль просчета изображения -- рендер, который характеризуется:-поддержка материалов;-условия распространения;К каждой сцене прилагается пакет текстур, который характеризуется:-количеством текстур;-типом архива.Сцены бывают статические и с содержанием анимации. Сцена с анимацией имеет параметры:-наличие звука;-количество кадров;-описание анимации (раскадровка).Если при создании анимации использовалась сторонняя программа или плагин, то последовательность кадров будет содержаться в отдельном файле, с параметрами:-название файла анимации;-тип файла;-размер файла.Используемый плагин характеризуется:-тип;-условия распространения;-название.Программа, используемая при создании сцены, характеризуется:-название;-поддерживаемые форматы;-условия распространения.Характеристики производителя, используемого программного продукта:-название организации;-адрес электронной почты;-адрес сайта Интернет;-страна.Так же имеются сведение об авторе сцены:-полное имя или псевдоним;-адрес электронной почты;-адрес сайта Интернет;Каждый автор имеет свой идентификационный номер.2.2 Словарь понятий и терминов
Исходное множество функциональных зависимостей Полное множество атрибутов предметной области 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} 2.5 Синтез схемы базы данных на основании функциональных зависимостей2.5.1 Построение неизбыточного покрытияg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_idscene_id -> render_namerender_name -> man_nameplug_name -> man_nameedit_name -> man_name1. 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=fg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_idrender_name -> man_nameplug_name -> man_nameedit_name -> man_name18. 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=fg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_idplug_name -> man_nameedit_name -> man_name19. 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=fg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_idedit_name -> man_name20. 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=fg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_idНеизбыточное покрытиеg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_idscene_id -> render_namerender_name -> man_nameplug_name -> man_nameedit_name -> man_name2.5.2 Построение леворедуцированного покрытияg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_id1. packname, scene_id -> amount, archiver_type1.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 -> sound2.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 -> frames3.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 -> raskadrovka4.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_ani5.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_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_id2.5.3 Построение праворедуцированного покрытияg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_id1. man_name -> man_email, man_www, man_country1.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_conditions2.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, materials3.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_type4.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_type5.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, comments6.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, cameras7.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 -> sound8.1. Если удаляем soundПроверяем: f |= scene_id, anim_id -> soundНет => множество ФЗ не изменяется.9. scene_id, anim_id -> frames9.1. Если удаляем framesПроверяем: f |= scene_id, anim_id -> framesНет => множество ФЗ не изменяется.10. scene_id, anim_id -> raskadrovka10.1. Если удаляем raskadrovkaПроверяем: f |= scene_id, anim_id -> raskadrovkaНет => множество ФЗ не изменяется.11. author_id -> author_name, author_email, author_www11.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_ani12.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_name13.1. Если удаляем man_nameПроверяем: f |= man_email -> man_nameНет => множество ФЗ не изменяется.14. man_www -> man_name14.1. Если удаляем man_nameПроверяем: f |= man_www -> man_nameНет => множество ФЗ не изменяется.15. author_email -> author_id15.1. Если удаляем author_idПроверяем: f |= author_email -> author_idНет => множество ФЗ не изменяется.16. author_www -> author_id16.1. Если удаляем author_idПроверяем: f |= author_www -> author_idНет => множество ФЗ не изменяется.Удаление зависимостей вида X->Праворедуцированное покрытиеg: man_name -> man_email, man_www, man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typescene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, camerasscene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovkaauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_id2.5.4 Построение классов эквивалентностей1. Ef( man_name ): man_name -> man_email, man_www, man_countryman_email -> man_nameman_www -> man_name2. Ef( edit_name ): edit_name -> supp_formats, man_name, edit_conditions3. Ef( render_name ): render_name -> man_name, ren_conditions, materials4. Ef( plug_name ): plug_name -> man_name, plug_conditions, plug_type5. Ef( packname, scene_id ): packname, scene_id -> amount, archiver_type6. Ef( scene_id ): scene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, commentsscene_id -> objects, lights, cameras7. Ef( scene_id, anim_id ): scene_id, anim_id -> soundscene_id, anim_id -> framesscene_id, anim_id -> raskadrovka8. Ef( author_id ): author_id -> author_name, author_email, author_wwwauthor_email -> author_idauthor_www -> author_id9. Ef( scene_id, anim_id, plug_name, type ): scene_id, anim_id, plug_name, type -> name_anifile, size_kb_ani2.5.5 Построение минимального покрытия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_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typeauthor_id -> author_name, author_email, author_wwwscene_id, anim_id, plug_name, type -> name_anifile, size_kb_animan_email -> man_nameman_www -> man_nameauthor_email -> author_idauthor_www -> author_idscene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, camerasscene_id, anim_id -> sound, frames, raskadrovka2.5.6 Получение минимального кольцевого редуцированного покрытияОпределение CF-зависимостей по классам эквивалентностиМинимальное кольцевое покрытие( 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_emailman_email -> man_wwwman_www -> man_nameman_www -> man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typeauthor_id -> author_emailauthor_email -> author_wwwauthor_www -> author_idauthor_www -> author_namescene_id, anim_id, plug_name, type -> name_anifile, size_kb_aniscene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, camerasscene_id, anim_id -> sound, frames, raskadrovkaЛевая редукция или перенос в правую часть1. Проверка CF-зависимости: ( man_name; man_email; man_www; ) -> man_country1.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_conditions2.1. Сформированная CF-зависимость: ( ) -> supp_formats, man_name, edit_conditions, edit_nameХарактеристические множества не эквивалентны3. Проверка CF-зависимости: ( render_name; ) -> man_name, ren_conditions, materials3.1. Сформированная CF-зависимость: ( ) -> man_name, ren_conditions, materials, render_nameХарактеристические множества не эквивалентны4. Проверка CF-зависимости: ( plug_name; ) -> man_name, plug_conditions, plug_type4.1. Сформированная CF-зависимость: ( ) -> man_name, plug_conditions, plug_type, plug_nameХарактеристические множества не эквивалентны5. Проверка CF-зависимости: ( packname, scene_id; ) -> amount, archiver_type5.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_name6.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_ani7.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, cameras8.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, raskadrovka9.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_country2.1. Сформированная CF-зависимость: ( man_name; man_email; man_www; )Характеристические множества не эквивалентны2. Проверка CF-зависимости: ( edit_name; ) -> supp_formats, man_name, edit_conditions3.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, materials4.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_type5.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_type6.1. Сформированная CF-зависимость: ( packname, scene_id; ) -> archiver_typeХарактеристические множества не эквивалентны6.2. Сформированная CF-зависимость: ( packname, scene_id; ) -> amountХарактеристические множества не эквивалентны6. Проверка CF-зависимости: ( author_id; author_email; author_www; ) -> author_name7.1. Сформированная CF-зависимость: ( author_id; author_email; author_www; )Характеристические множества не эквивалентны7. Проверка CF-зависимости: ( scene_id, anim_id, plug_name, type; ) -> name_anifile, size_kb_ani8.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, cameras9.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, raskadrovka10.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_emailman_email -> man_wwwman_www -> man_nameman_www -> man_countryedit_name -> supp_formats, man_name, edit_conditionsrender_name -> man_name, ren_conditions, materialsplug_name -> man_name, plug_conditions, plug_typepackname, scene_id -> amount, archiver_typeauthor_id -> author_emailauthor_email -> author_wwwauthor_www -> author_idauthor_www -> author_namescene_id, anim_id, plug_name, type -> name_anifile, size_kb_aniscene_id -> scene_name, size_polys, edit_name, author_id, render_name, size_kb, created, comments, objects, lights, camerasscene_id, anim_id -> sound, frames, raskadrovka2.6 Логическая модель предметной области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 }2.7 Уточненная концептуальная модель3 ПОСТРОЕНИЕ ЗАПРОСОВ1. Выбрать все сцены, созданные 20.03.05SELECT scene_id FROM 3dscene WHERE(created=”20.03.05') |
РЕКЛАМА
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |