ЗАДАНИЕ 1
Экземпляр отношения:
Блюдо | Вид | Рецепт | Порций | Дата Р | Продукт | Калорийность | Вес(г) | Поставщик | Город | Страна | Вес(кг) | Цена($) | Дата П |
Лобио | Закуска | Лом. | 1/9/94 | Фасоль | «Хуанхэ» | Пекин | Китай | 0.37 | 24/8/94 | ||||
Лук | «Наталка» | Киев | Украина | 0.52 | 27/8/94 | ||||||||
Масло | «Лайма» | Рига | Латвия | 1.55 | 30/8/94 | ||||||||
Зелень | «Даугва» | Рига | Латвия | 0.99 | 30/8/94 | ||||||||
Харчо | Суп | ... | 1/9/94 | Мясо | «Наталка» | Киев | Украина | 2.18 | 27/8/94 | ||||
Лук | «Наталка» | Киев | Украина | 0.52 | 27/8/94 | ||||||||
Томаты | «Полесье» | Киев | Украина | 0.45 | 27/8/94 | ||||||||
Рис | «Хуанхэ» | Пекин | Китай | 0.44 | 27/8/94 | ||||||||
Масло | «Полесье» | Киев | Украина | 1.62 | 27/8/94 | ||||||||
Зелень | «Наталка» | Киев | Украина | 0.88 | 27/8/94 | ||||||||
Шашлык | Горячее | ... | 1/9/94 | Мясо | «Юрмала» | Рига | Латвия | 2.05 | 30/8/94 | ||||
Лук | «Полесье» | Киев | Украина | 0.61 | 27/8/94 | ||||||||
Томаты | «Полесье» | Киев | Украина | 0.45 | 27/8/94 | ||||||||
Зелень | «Даугава» | Рига | Латвия | 0.99 | 30/8/94 | ||||||||
Кофе | Десерт | ... | 1/9/94 | Кофе | «Хуанхэ» | Пекин | Китай | 2.87 | 24/8/94 |
Дозаполним данные в изначальном экземпляре отношенияи дадим имя отношению :
Блюдо | Вид | Рецепт | Порций | Дата Р | Продукт | Калорийность | Вес (г) | Поставщик | Город | Страна | Вес(кг) | Цена($) | Дата П |
Лобио | Закуска | Лом. | 1/9/94 | Фасоль | «Хуанхэ» | Пекин | Китай | 0.37 | 24/8/94 | ||||
Лобио | Закуска | Лом. | 1/9/94 | Лук | «Наталка» | Киев | Украина | 0.52 | 27/8/94 | ||||
Лобио | Закуска | Лом. | 1/9/94 | Масло | «Лайма» | Рига | Латвия | 1.55 | 30/8/94 | ||||
Лобио | Закуска | Лом. | 1/9/94 | Зелень | «Даугва» | Рига | Латвия | 0.99 | 30/8/94 | ||||
Харчо | Суп | Блендер | 1/9/94 | Мясо | «Наталка» | Киев | Украина | 2.18 | 27/8/94 | ||||
Харчо | Суп | Блендер | 1/9/94 | Лук | «Наталка» | Киев | Украина | 0.52 | 27/8/94 | ||||
Харчо | Суп | Блендер | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 0.45 | 27/8/94 | ||||
Харчо | Суп | Блендер | 1/9/94 | Рис | «Хуанхэ» | Пекин | Китай | 0.44 | 27/8/94 | ||||
Харчо | Суп | Блендер | 1/9/94 | Масло | «Полесье» | Киев | Украина | 1.62 | 27/8/94 | ||||
Харчо | Суп | Блендер | 1/9/94 | Зелень | «Наталка» | Киев | Украина | 0.88 | 27/8/94 | ||||
Шашлык | Горячее | На углях | 1/9/94 | Мясо | «Юрмала» | Рига | Латвия | 2.05 | 30/8/94 | ||||
Шашлык | Горячее | На углях | 1/9/94 | Лук | «Полесье» | Киев | Украина | 0.61 | 27/8/94 | ||||
Шашлык | Горячее | На углях | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 0.45 | 27/8/94 | ||||
Шашлык | Горячее | На углях | 1/9/94 | Зелень | «Даугава» | Рига | Латвия | 0.99 | 30/8/94 | ||||
Кофе | Десерт | Заказать | 1/9/94 | Кофе | «Хуанхэ» | Пекин | Китай | 2.87 | 24/8/94 |
Отношение находится в 1НФ, так как на пересечении каждого столбца и каждой строки содержится одно значение.
|
Аномалии для :
Аномалия | Есть ли в отношении | Пример |
Модификации | Есть | Для изменения рецепта у любого продукта надо пересмотреть всю таблицу |
Удаления | Есть | Если удалить строчку с Блюдом шашлык и с Продуктом Мясо, то пропадет информацию о поставщике «Юрмала» |
Вставки данных | Есть | Для создания нового блюда необходимо сразу определить калорийность |
|
Потенциальные ключи:
{Блюдо, Дата_П, Продукт} – первичный ключ
{Рецепт, Дата_П, Продукт}
Функциональные зависимости:
Продукт -> Калорийность;
Блюдо -> Вид;
Блюдо -> Рецепт;
Блюдо, Дата_Р -> Порции;
Блюдо, Продукт -> Вес;
Продукт, Поставщик, Город, Страна, Дата_П -> Вес (кг);
Продукт, Поставщик, Город, Страна, Дата_П -> Цена ($);
Ключевые атрибуты:
Блюдо, Рецепт, Дата_Р, Продукт
Неключевые атрибуты:
Вид, Порции, Калорийность, Вес(г), Поставщик, Город, Страна, Вес(кг), Цена ($), Дата_П
Для 2НФ необходимо сделать декомпозицию отношения , чтобы утранить зависимость неключевых атрибутов от части сложного ключа. Выделим следующие отношения:
Продукт -> Калорийность;
Блюдо -> Вид;
Блюдо -> Рецепт;
Блюдо, Дата_Р -> Порции;
Блюдо, Продукт -> Вес.
. Сводная_Таблица
Блюдо | Дата Р | Продукт | Поставщик | Город | Страна | Вес(кг) | Цена($) | Дата П |
Лобио | 1/9/94 | Фасоль | «Хуанхэ» | Пекин | Китай | 0.37 | 24/8/94 | |
Лобио | 1/9/94 | Лук | «Наталка» | Киев | Украина | 0.52 | 27/8/94 | |
Лобио | 1/9/94 | Масло | «Лайма» | Рига | Латвия | 1.55 | 30/8/94 | |
Лобио | 1/9/94 | Зелень | «Даугва» | Рига | Латвия | 0.99 | 30/8/94 | |
Харчо | 1/9/94 | Мясо | «Наталка» | Киев | Украина | 2.18 | 27/8/94 | |
Харчо | 1/9/94 | Лук | «Наталка» | Киев | Украина | 0.52 | 27/8/94 | |
Харчо | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 0.45 | 27/8/94 | |
Харчо | 1/9/94 | Рис | «Хуанхэ» | Пекин | Китай | 0.44 | 27/8/94 | |
Харчо | 1/9/94 | Масло | «Полесье» | Киев | Украина | 1.62 | 27/8/94 | |
Харчо | 1/9/94 | Зелень | «Наталка» | Киев | Украина | 0.88 | 27/8/94 | |
Шашлык | 1/9/94 | Мясо | «Юрмала» | Рига | Латвия | 2.05 | 30/8/94 | |
Шашлык | 1/9/94 | Лук | «Полесье» | Киев | Украина | 0.61 | 27/8/94 | |
Шашлык | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 0.45 | 27/8/94 | |
Шашлык | 1/9/94 | Зелень | «Даугава» | Рига | Латвия | 0.99 | 30/8/94 | |
Кофе | 1/9/94 | Кофе | «Хуанхэ» | Пекин | Китай | 2.87 | 24/8/94 |
. Продукт_Калорийность
|
Продукт | Калорийность |
Фасоль | |
Лук | |
Масло | |
Зелень | |
Мясо | |
Томаты | |
Рис | |
Кофе |
. Блюдо_Рецепт
Блюдо | Рецепт |
Лобио | Лом. |
Харчо | Блендер |
Шашлык | На углях |
Кофе | Заказать |
. Блюдо_Вид
Блюдо | Вид |
Лобио | Закуска |
Харчо | Суп |
Шашлык | Горячее |
Кофе | Десерт |
. Блюдо_Порции
Блюдо | Порций | Дата Р |
Лобио | 1/9/94 | |
Харчо | 1/9/94 | |
Шашлык | 1/9/94 | |
Кофе | 1/9/94 |
. Блюдо_Вес
Блюдо | Продукт | Вес (г) |
Лобио | Фасоль | |
Лобио | Лук | |
Лобио | Масло | |
Лобио | Зелень | |
Харчо | Мясо | |
Харчо | Лук | |
Харчо | Томаты | |
Харчо | Рис | |
Харчо | Масло | |
Харчо | Зелень | |
Шашлык | Мясо | |
Шашлык | Лук | |
Шашлык | Томаты | |
Шашлык | Зелень | |
Кофе | Кофе |
Аномалии для :
Аномалия | Есть ли в отношении | Пример |
Модификации | Есть | Для изменения имени у поставщика надо пересмотреть всю таблицу |
Удаления | Есть | Если удалить строчку с Блюдом шашлык и с Продуктом Мясо, то пропадет информацию о поставщике «Юрмала» |
Вставки данных | Нет |
Отношения , , , , находятся в 3НФ, так как все неключевые атрибуты взаимно-независимы.
Отношение не в 3НФ, так как неключевые атрибуты взаимно-зависимы:
Продукт, Поставщик, Город, Страна, Дата_П -> Вес (кг);
Продукт, Поставщик, Город, Страна, Дата_П -> Цена ($);
Делаем декомпозицию:
. Сводная_Таблица
Блюдо | Дата Р | Продукт | Поставщик | Город | Страна | Дата П |
Лобио | 1/9/94 | Фасоль | «Хуанхэ» | Пекин | Китай | 24/8/94 |
Лобио | 1/9/94 | Лук | «Наталка» | Киев | Украина | 27/8/94 |
Лобио | 1/9/94 | Масло | «Лайма» | Рига | Латвия | 30/8/94 |
Лобио | 1/9/94 | Зелень | «Даугва» | Рига | Латвия | 30/8/94 |
Харчо | 1/9/94 | Мясо | «Наталка» | Киев | Украина | 27/8/94 |
Харчо | 1/9/94 | Лук | «Наталка» | Киев | Украина | 27/8/94 |
Харчо | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 27/8/94 |
Харчо | 1/9/94 | Рис | «Хуанхэ» | Пекин | Китай | 27/8/94 |
Харчо | 1/9/94 | Масло | «Полесье» | Киев | Украина | 27/8/94 |
Харчо | 1/9/94 | Зелень | «Наталка» | Киев | Украина | 27/8/94 |
Шашлык | 1/9/94 | Мясо | «Юрмала» | Рига | Латвия | 30/8/94 |
Шашлык | 1/9/94 | Лук | «Полесье» | Киев | Украина | 27/8/94 |
Шашлык | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 27/8/94 |
Шашлык | 1/9/94 | Зелень | «Даугава» | Рига | Латвия | 30/8/94 |
Кофе | 1/9/94 | Кофе | «Хуанхэ» | Пекин | Китай | 24/8/94 |
. ИнформацияоПоставках
Продукт | Поставщик | Город | Страна | Вес(кг) | Цена($) | Дата П |
Фасоль | «Хуанхэ» | Пекин | Китай | 0.37 | 24/8/94 | |
Масло | «Лайма» | Рига | Латвия | 1.55 | 30/8/94 | |
Мясо | «Наталка» | Киев | Украина | 2.18 | 27/8/94 | |
Лук | «Наталка» | Киев | Украина | 0.52 | 27/8/94 | |
Томаты | «Полесье» | Киев | Украина | 0.45 | 27/8/94 | |
Рис | «Хуанхэ» | Пекин | Китай | 0.44 | 27/8/94 | |
Масло | «Полесье» | Киев | Украина | 1.62 | 27/8/94 | |
Зелень | «Наталка» | Киев | Украина | 0.88 | 27/8/94 | |
Мясо | «Юрмала» | Рига | Латвия | 2.05 | 30/8/94 | |
Лук | «Полесье» | Киев | Украина | 0.61 | 27/8/94 | |
Зелень | «Даугава» | Рига | Латвия | 0.99 | 30/8/94 | |
Кофе | «Хуанхэ» | Пекин | Китай | 2.87 | 24/8/94 |
Проверка корректности процедуры нормализации:
Получаем следующее отношение :
Блюдо | Дата Р | Продукт | Поставщик | Город | Страна | Дата П | Вес(кг) | Цена($) |
Лобио | 1/9/94 | Фасоль | «Хуанхэ» | Пекин | Китай | 24/8/94 | 0.37 | |
Лобио | 1/9/94 | Лук | «Наталка» | Киев | Украина | 27/8/94 | 0.52 | |
Лобио | 1/9/94 | Масло | «Лайма» | Рига | Латвия | 30/8/94 | 1.55 | |
Лобио | 1/9/94 | Зелень | «Даугва» | Рига | Латвия | 30/8/94 | 0.99 | |
Харчо | 1/9/94 | Мясо | «Наталка» | Киев | Украина | 27/8/94 | 2.18 | |
Харчо | 1/9/94 | Лук | «Наталка» | Киев | Украина | 27/8/94 | 0.52 | |
Харчо | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 27/8/94 | 0.45 | |
Харчо | 1/9/94 | Рис | «Хуанхэ» | Пекин | Китай | 27/8/94 | 0.44 | |
Харчо | 1/9/94 | Масло | «Полесье» | Киев | Украина | 27/8/94 | 1.62 | |
Харчо | 1/9/94 | Зелень | «Наталка» | Киев | Украина | 27/8/94 | 0.88 | |
Шашлык | 1/9/94 | Мясо | «Юрмала» | Рига | Латвия | 30/8/94 | 2.05 | |
Шашлык | 1/9/94 | Лук | «Полесье» | Киев | Украина | 27/8/94 | 0.61 | |
Шашлык | 1/9/94 | Томаты | «Полесье» | Киев | Украина | 27/8/94 | 0.45 | |
Шашлык | 1/9/94 | Зелень | «Даугава» | Рига | Латвия | 30/8/94 | 0.99 | |
Кофе | 1/9/94 | Кофе | «Хуанхэ» | Пекин | Китай | 24/8/94 | 2.87 |
Значения в отношении равны значениям в отношении
Нормализацию на БКНФ проводить не надо, так как отношения не содержат пересекающих ключей.
Нормализацию на 4НФ проводить не надо, так как нет отношений, в которых все атрибуты составляли бы потонциальные ключи.
Нормализацию на 5НФ проводить не надо, так как отсутствуют зависимости соединения.
ЗАДАНИЕ 2
Предположим, что в базе данных имеется отношение для контроля за рабочим графиком служащих. Каждый служащий отрабатывает в магазине одну или две смены в день. На каждую смену служащему назначается одно определенное место (например, конторский столик у входа в магазин или складское помещение). В течение смены на этом месте работает только один служащий.
График :
Номер_сотрудника | Дата | Смена | Рабочее_место | Вышел_на_работу? |
5.5.2017 | Стол1 | Да | ||
5.5.2017 | Стол1 | Нет | ||
5.5.2017 | Стол2 | Да | ||
5.5.2017 | Стол2 | Да | ||
5.5.2017 | Стол3 | Да | ||
5.5.2017 | Стол4 | Нет |
Провести нормализацию отношения.
Отношение находится в 1НФ, так как на пересечении каждого столбца и каждой строки содержится одно значение.
Потенциальные ключи:
{Номер_сотрудника, Дата, Смена}
{Рабочее_место, Дата, Смена}
Функциональные зависимости:
Номер_сотрудника, Дата, Смена ->Рабочее_место;
Номер_сотрудника, Дата, Смена ->Вышел_на_работу?;
Рабочее_место, Дата, Смена->Рабочее_место;
Рабочее_место, Дата, Смена->Вышел_на_работу?;
Ключевые атрибуты:
Номер_сотрудника, Дата, Смена, Рабочее_место
Неключевые атрибуты:
Вышел_на_работу?
Отношение соответсвует 2НФ, так как нет зависимости неключевых атрибутов от части сложного ключа.
Отношение находятся в 3НФ, так как все неключевые атрибуты взаимно-независимы.
Необходимо проверить на соответствие НФ Бойса-Кодда, так как отношение содержит пересекающиеся потенциальные ключи. Рассмотррим функциональные зависимости и определим, что отношение соответствует НФ Бойса-Кодда, так каквсе функциональные зависимости в качестве детерминанта имеет некоторый потенциальный ключ.
Отношение соответствует 4НФ, так как в потенциальные ключи входят не все атрибуты отношения.
Отношение соответствует 5НФ, так как отношение не содержит зависимостей соединения.