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

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

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

Кафедра ПО ВТ

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

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

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

Выполнил: студент гр. ПО-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_nameDiscreet
Почта производителяАдрес электронной почты производителяMan_emailAuthcodes. neu@autodesk. com
Сайт производителяАдрес сайта производителяMan_wwwWww. discreet. com
СтранаСтрана производителяMan_countryUSA
Название средства моделированияПолное название средства моделированияEdit_name3DS MAX 6.0
Условия распространения средства моделированияУсловия распространения средства моделированияEdit_conditionsCommercial
ФорматыФорматы файлов, поддерживаемые программой моделированияSupp_formats*.max, *.chr
РендерПолное название рендераRender_nameMental Ray
Условия распространения рендераУсловия распространения рендераRen_conditionsCommercial
МатериалыПоддерживает ли рендер материалы(да/нет)MaterialsYes
ПлагинПолное название плагина или сторонней программы, использованной при создании анимацииPlug_nameCharacter Studio 4.1
Условия распространения плагинаУсловия распространения плагина или сторонней программы, использованной при создании анимацииPlug_conditionsCommercial
Тип плагинаПрограмма или плагинPlug_typePlugin
Идентификатор сценыИдентификатор сценыScene_id0035
Название сценыНазвание сценыScene_nameMy_scene
Количество полигоновКоличество полигонов в сценеSize_polys50 564
Размер файла сценыРазмер файла, содержащего сценуSize_kb3 693
Дата создания сценыДата создания сценыCreated14.03.05
Комментарии к сценеКомментарии к сценеCommentsСцена анимации персонажа из игры
Пакет текстурНазвание архива, содержащего текстуры к сценеPacknameMy_pack
Количество текстур в архивеКоличество текстур в архивеAmount20
Тип архиваТип архива, содержащего текстуры к сценеArchiver_type*.zip
ОбъектыКоличество объектов в сценеObjects12
СветКоличество источников освещения в сценеLights3
КамерыКоличество камер в сценеCameras1
Идентификатор анимацииИдентификатор файла анимацииAnim_id0013
ЗвукПрисутствует ли звук в анимированной сцене(да/нет)SoundNo
Количество кадров анимацииКоличество кадров анимацииFrames150
РаскадровкаКомментарий, содержащий детальное пояснение анимации персонажаRaskadrovka

1-10:ходьба

11-20: бег

21-60: падение

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

Тип файла анимацииType*.bip
Имя файла анимацииИмя файла анимацииName_anifileMy_anim

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

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

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

Идентификатор автора сценыAuthor_id0045
Полное имя или псевдоним автора сценыПолное имя или псевдоним автора сценыAuthor_nameRenderman
Почта автораАдрес электронной почты автора сценыAuthor_emailRenderman@mail. ru
Сайт автораАдрес сайта Интернет автора сценыAuthor_wwwWww. 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

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


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...
Графические редакторы (пакеты трехмерного моделирования)