Графические редакторы (пакеты трехмерного моделирования)                           
		Графические редакторы (пакеты трехмерного моделирования)                           
Министерство образования  и науки  Российской Федерации
Курский Государственный Технический Университет
Кафедра ПО ВТ
КУРСОВАЯ РАБОТА 
по дисциплине: “Базы данных” 
Тема: “ Графические редакторы (пакеты трехмерного моделирования)” 
Выполнил:  студент гр. ПО-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')