бесплатные рефераты

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

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

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

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

Кафедра ПО ВТ

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

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

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

Выполнил: студент гр. ПО-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

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


© 2010 РЕФЕРАТЫ