Министерство образования и науки Российской Федерации
Курский Государственный Технический Университет
Кафедра ПО ВТ
КУРСОВАЯ РАБОТА
по дисциплине: “Базы данных”
Тема: “ Графические редакторы (пакеты трехмерного моделирования)”
Выполнил: студент гр. ПО-21 Чельцов Е. О.
Проверил: доцент Белов В. Г.
К У Р С К
2 0 0 8
СОДЕРЖАНИЕ
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 Построение классов эквивалентностей
! | Как писать курсовую работу Практические советы по написанию семестровых и курсовых работ. |
! | Схема написания курсовой Из каких частей состоит курсовик. С чего начать и как правильно закончить работу. |
! | Формулировка проблемы Описываем цель курсовой, что анализируем, разрабатываем, какого результата хотим добиться. |
! | План курсовой работы Нумерованным списком описывается порядок и структура будующей работы. |
! | Введение курсовой работы Что пишется в введении, какой объем вводной части? |
! | Задачи курсовой работы Правильно начинать любую работу с постановки задач, описания того что необходимо сделать. |
! | Источники информации Какими источниками следует пользоваться. Почему не стоит доверять бесплатно скачанным работа. |
! | Заключение курсовой работы Подведение итогов проведенных мероприятий, достигнута ли цель, решена ли проблема. |
! | Оригинальность текстов Каким образом можно повысить оригинальность текстов чтобы пройти проверку антиплагиатом. |
! | Оформление курсовика Требования и методические рекомендации по оформлению работы по ГОСТ. |
→ | Разновидности курсовых Какие курсовые бывают в чем их особенности и принципиальные отличия. |
→ | Отличие курсового проекта от работы Чем принципиально отличается по структуре и подходу разработка курсового проекта. |
→ | Типичные недостатки На что чаще всего обращают внимание преподаватели и какие ошибки допускают студенты. |
→ | Защита курсовой работы Как подготовиться к защите курсовой работы и как ее провести. |
→ | Доклад на защиту Как подготовить доклад чтобы он был не скучным, интересным и информативным для преподавателя. |
→ | Оценка курсовой работы Каким образом преподаватели оценивают качества подготовленного курсовика. |
Курсовая работа | Деятельность Движения Харе Кришна в свете трансформационных процессов современности |
Курсовая работа | Маркетинговая деятельность предприятия (на примере ООО СФ "Контакт Плюс") |
Курсовая работа | Политический маркетинг |
Курсовая работа | Создание и внедрение мембранного аппарата |
Курсовая работа | Социальные услуги |
Курсовая работа | Педагогические условия нравственного воспитания младших школьников |
Курсовая работа | Деятельность социального педагога по решению проблемы злоупотребления алкоголем среди школьников |
Курсовая работа | Карибский кризис |
Курсовая работа | Сахарный диабет |
Курсовая работа | Разработка оптимизированных систем аспирации процессов переработки и дробления руд в цехе среднего и мелкого дробления Стойленского ГОКа |
Курсовая работа | Кредитование физических лиц |
Курсовая работа | Уголовное преследование |
Курсовая работа | Анализ эффективности использования основных фондов |
Курсовая работа | Деятельность страховых организаций |
Курсовая работа | Разработка автоматизированного рабочего места бухгалтера |
Курсовая работа | Психологическая готовность ребенка к школьному обучению |
Курсовая работа | Планирование и распределение прибыли |
Курсовая работа | Организация и мотивация труда на предприятии |
Курсовая работа | Рынок драгоценных металлов России |
Курсовая работа | Статистико-экономический анализ себестоимости продукции ООО "Маруся" |
Курсовая работа | Малый бизнес в рыночной экономике, его роль и перспективы |
Курсовая работа | Обеспечение пожарной безопасности |
Курсовая работа | Анализ финансовохозяйственной деятельности страховой компании Росгосстрах |
Курсовая работа | Особенности формирования игровой деятельности умственно отсталых детей |
Курсовая работа | Моделирование систем массового обслуживания |