РефератыИнформатика, программированиеГрГрафические редакторы (пакеты трехмерного моделирования)

Графические редакторы (пакеты трехмерного моделирования)

Министерство образования и науки Российской Федерации


Курский Государственный Технический Университет


Кафедра ПО ВТ


КУРСОВАЯ РАБОТА


по дисциплине: “Базы данных”


Тема: “ Графические редакторы (пакеты трехмерного моделирования)”


Выполнил: студент гр. ПО-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 ПОСТРОЕНИЕ ЗАПРОСОВ


1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ


1.1 Основание для разработки

Необходимо спроектировать и разработать базу данных, обеспечивающую ввод, хранение и обработку информации о графических редакторах, а именно пакетах трехмерного моделирования. Основанием для разработки послужило задание на курсовое проектирование по дисциплине “Базы данных”.


1.2 Задание

Спроектировать базу данных, содержащую информацию о графических редакторах, а именно пакетах трехмерного моделирования
. Описать предметную область, разработать словарь понятий и терминов, построить систему функциональных зависимостей, ER-диаграмму. Синтезировать схему базы данных на основании функциональных зависимостей (построение неизбыточного покрытия, построение леворедуцированного неизбыточного покрытия, построение праворедуцированного неизбыточного покрытия, построение классов эквивалентностей, построение минимального покрытия). Построить уточненную концептуальную модель в виде ER-диаграммы, запросы предметной области. Записать запросы на языке SQL.


2.ТЕХНИЧЕСКИЙ ПРОЕКТ
2.1 Описание предметной области

В настоящее время большая часть новых компьютерных технологий ориентированна на сферу развлечений. Трехмерная графика является её наиболее интересной составляющей. Она используется в киноиндустрии, в индустрии компьютерных игр, в области проектирования и т.д.


На данный момент существует довольно много средств трехмерного моделирования — начиная от простейших программ, типа “Ultimate Unwrap3D”, предназначенных для создания простейших сцен и зачастую распространяемых бесплатно, и заканчивая мощными коммерческими пакетами моделирования, типа “Maya”, предназначенных для создания реалистичных изображений и анимации.


В Интернете существуют сайты, на которых хранятся большие коллекции файлов (сцен) для такого рода программ. Каждая сцена имеет свой идентификационный номер и характеризуется следующими параметрами:


-название сцены;


-количество полигонов в сцене;


-размер файла;


-дата создания;


-количество объектов;


-количество источников света;


-количество камер;


-комментарии.


При создании сцены используется модуль просчета изображения — рендер, который характеризуется:


-поддержка материалов;


-условия распространения;


К каждой сцене прилагается пакет текстур, который характеризуется:


-количеством текстур;


-типом архива.


Сцены бывают статические и с содержанием анимации. Сцена с анимацией имеет параметры:


-наличие звука;


-количество кадров;


-описание анимации (раскадровка).


Если при создании анимации использовалась сторонняя программа или плагин, то последовательность кадров будет содержаться в отдельном файле, с параметрами:


-название файла анимации;


-тип файла;


-размер файла.


Используемый плагин характеризуется:


-тип;


-условия распространения;


-название.


Программа, используемая при создании сцены, характеризуется:


-название;


-поддерживаемые форматы;


-условия распространения.


Характеристики производителя, используемого программного продукта:


-название организации;


-адрес электронной почты;


-адрес сайта Интернет;


-страна.


Так же имеются сведение об авторе сцены:


-полное имя или псевдоним;


-адрес электронной почты;


-адрес сайта Интернет;


Каждый автор имеет свой идентификационный номер.


2.2 Словарь понятий и терминов

























































































































































































Наименование Смысл Обозначение Пример
Имя призводителя Наименование производителя пакета моделирования man_name Discreet
Почта производителя Адрес электронной почты производителя man_email authcodes.neu@autodesk.com
Сайт производителя Адрес сайта производителя man_www www.discreet.com
Страна Страна производителя man_country USA
Название средства моделирования Полное название средства моделирования edit_name 3DS MAX 6.0
Условия распространения средства моделирования Условия распространения средства моделирования edit_conditions Commercial
Форматы Форматы файлов, поддерживаемые программой моделирования supp_formats *.max, *.chr
Рендер Полное название рендера render_name Mental Ray
Условия распространения рендера Условия распространения рендера ren_conditions Commercial
Материалы Поддерживает ли рендер материалы(да/нет) materials Yes
Плагин Полное название плагина или сторонней программы, использованной при создании анимации plug_name Character Studio 4.1
Условия распространения плагина Условия распространения плагина или сторонней программы, использованной при создании анимации plug_conditions Commercial
Тип плагина Программа или плагин plug_type plugin
Идентификатор сцены Идентификатор сцены scene_id 0035
Название сцены Название сцены scene_name My_scene
Количество полигонов Количество полигонов в сцене size_polys 50 564
Размер файла сцены Размер файла, содержащего сцену size_kb 3 693
Дата создания сцены Дата создания сцены created 14.03.05
Комментарии к сцене Комментарии к сцене comments Сцена анимации персонажа из игры
Пакет текстур Название архива, содержащего текстуры к сцене packname My_pack
Количество текстур в архиве Количество текстур в архиве amount 20
Тип архива Тип архива, содержащего текстуры к сцене archiver_type *.zip
Объекты Количество объектов в сцене objects 12
Свет Количество источников освещения в сцене lights 3
Камеры Количество камер в сцене cameras 1
Идентификатор анимации Идентификатор файла анимации anim_id 0013
Звук Присутствует ли звук в анимированной сцене(да/нет) sound no
Количество кадров анимации Количество кадров анимации frames 150
Раскадровка Комментарий, содержащий детальное пояснение анимации персонажа raskadrovka

1-10:ходьба


11-20: бег


21-60: падение


Тип файла анимации


Тип файла анимации type *.bip
Имя файла анимации Имя файла анимации name_anifile My_anim

Размер файла анимации


Размер файла анимации size_kb_ani 825

Идентификатор автора сцены


Идентификатор автора сцены author_id 0045
Полное имя или псевдоним автора сцены Полное имя или псевдоним автора сцены author_name Renderman
Почта автора Адрес электронной почты автора сцены author_email renderman@mail.ru
Сайт автора Адрес сайта Интернет автора сцены author_www www.renman.narod.ru

2.3 Первый вариант
ER-диаграммы:


2.4 Построение функциональных зависимостей:































































Функциональная зависимость Описание
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 Программа моделирования не может быть произведена двумя и более производителями
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 Идентификатор сцены, идентификатор анимации, плагин, тип плагина определяют имя файла анимации и размер файла анимации

Исходное множество функциональных зависимостей



Полное множество атрибутов предметной области


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_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


2.5.2 Построениелеворедуцированногопокрытия

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<

/p>

Проверяем: 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


2.5.3 Построениеправоредуцированногопокрытия

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


2.5.4 Построение классов эквивалентностей

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


2.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_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


2.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_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


2.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.05


SELECT scene_id FROM 3dscene WHERE(created=”20.03.05’)


Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Графические редакторы (пакеты трехмерного моделирования)

Слов:5610
Символов:61619
Размер:120.35 Кб.