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