Кафедра ИТКафедра ИТ
Блог
Обучение
  • О кафедре
  • Направления подготовки
  • Друзья и партнеры
  • Структура кафедры
  • Обращение к студентам
  • Официальный сайт «ВШП»
GitHub
Блог
Обучение
  • О кафедре
  • Направления подготовки
  • Друзья и партнеры
  • Структура кафедры
  • Обращение к студентам
  • Официальный сайт «ВШП»
  1. Главная
  2. Учебные материалы
  3. МДК.11.01 - Технология р...
  4. МДК.11.01 - QUIZ. Задани...

МДК.11.01 - QUIZ. Задания для самопроверки

В этом квизе представлены наборы данных в виде таблиц, каждая из которых находится в одной из нормальных форм базы данных: от сырых данных (RAW DATA) и ненормализованной формы (UNF) до шестой нормальной формы (6NF). Студентам предстоит проанализировать данные таблиц и определить, в какой нормальной форме они находятся. Обратите внимание, что в некоторых случаях отдельные таблицы могут находиться в более низких формах, однако если одна из таблиц удовлетворяет требованиям более высокой формы, принято считать, что вся база данных соответствует этой форме.

Список заданий:

  • 1. Список покупок
  • 2. Проекты и задачи
  • 3. Расписание занятий
  • 4. Аренда автомобилей
  • 5. Заказы и клиенты
  • 6. Регистрация на курсы
  • 7. Производство товаров
  • 8. Товары и поставщики
  • 9. Расписание работы сотрудников
  • 10. Сырые данные заказов

Инфо

Здесь и далее в примерах будут использованы следующие обозначения:

  • 🔑 - Первичный ключ
  • 🔗 - Внешний ключ
  • ⚠️ - Набор значений ограничен

1. Список покупок

Представлены данные о покупках клиентов, где каждый клиент может купить несколько товаров.

customer_nameitems_bought
Иван ИвановМолоко, Хлеб
Сергей СергеевЯйца, Сахар, Молоко
John SmithBread, Milk, Eggs
Иван ИвановСахар

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

UNF

Представленная таблица находится в UNF, потому что у нас есть неатомарные значения в колонке items_bought, где несколько товаров записаны в одной ячейке.

2. Проекты и задачи

Это система учёта проектов, в которой каждая задача относится к проекту, а у проекта есть руководитель. Таблица содержит данные о проекте, задачах и их исполнителях.

🔑 project_id🔑 task_idtask_nameassigneeproject_manager
1101Создать макетИван ИвановПетров Пётр
1102Разработать дизайнСергей СергеевПетров Пётр
2201Написать документациюJohn SmithИванова Анна
2202Провести тестированиеИван ИвановИванова Анна

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

2NF

Таблица находится как минимум в 1NF, так как данные атомарны. Но есть частичная зависимость: атрибут project_manager зависит только от project_id, а не от всего составного ключа (project_id + task_id).
Следовательно, таблица нарушает требования 3NF, но полностью соответствует условиям 2NF.

3. Расписание занятий

Здесь представлено расписание занятий для студентов. В таблице хранятся данные о том, какие предметы студенты изучают в каждом классе. Первичный ключ в таблице отсутствует.

🔗 class_idstudent_namesubject
1Иван ИвановМатематика
1Иван ИвановФизика
2Сергей СергеевХимия
2Сергей СергеевБиология
3John SmithИстория
3John SmithEnglish

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

1NF

Представленная таблица находится в 1NF, так как все атрибуты содержат атомарные значения, и каждая запись уникальна.

4. Аренда автомобилей

Данные о системе аренды автомобилей, в которой хранится информация о датах аренды автомобилей клиентами. Каждая аренда связана с конкретным клиентом и автомобилем.

Таблица аренды

🔑 car_id🔑 rental_date🔗 customer_id
1012024-09-01201
1022024-09-02202
1012024-09-03203

Таблица клиентов

🔑 customer_idcustomer_name
201Иван Иванов
202Сергей Сергеев
203John Smith

Таблица автомобилей

🔑 car_idcar_modellicense_plate
101Toyota CamryAA123BB
102Honda CivicBB234CC

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

BCNF

Представленные таблицы находятся в BCNF, потому что в таблице аренды составной ключ (car_id + rental_date) определяет все атрибуты, и нет транзитивных зависимостей. Две другие таблицы (клиентов и автомобилей) технически находятся в 3NF, так как в них все неключевые атрибуты зависят только от ключей. Однако, поскольку таблица аренды находится в BCNF, принято считать, что и вся база данных соответствует BCNF.

5. Заказы и клиенты

Система заказов, где хранится информация о заказах клиентов. Таблица заказов связана с таблицей клиентов, которые делают эти заказы.

Таблица заказов

🔑 order_id🔗 customer_idorder_date
11012024-09-01
21022024-09-02
31032024-09-03

Таблица клиентов

🔑 customer_idcustomer_namecustomer_email
101Иван Ивановivan@example.com
102Сергей Сергеевsergey@example.com
103John Smithjohn@example.com

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

3NF

Представленные таблицы находятся в 3NF, потому что они удовлетворяют требованиям 2NF, и нет транзитивных зависимостей. Каждая таблица хранит только те данные, которые напрямую зависят от её первичного ключа. В таблице заказов все неключевые атрибуты зависят только от order_id, а в таблице клиентов — от customer_id.

6. Регистрация на курсы

Система регистрации студентов на курсы. Каждый студент может зарегистрироваться на несколько курсов но не больше установленного ограничения. Кроме того, для каждого курса также есть ограничения по количеству студентов. Оба ограничения регулируются на уровне логики СУБД.

Таблица регистрации студентов на курсы

🔑 🔗 student_id🔑 🔗 course_idenrollment_datecourses_count
11012024-09-012
21022024-09-021
31032024-09-031
11032024-09-042

Таблица студентов

🔑 student_idstudent_nameselected_courses⚠️ max_courses
1Иван Иванов22
2Сергей Сергеев13
3John Smith13

Таблица курсов

🔑 course_idcourse_name⚠️ max_students
101Математика30
102Физика25
103Химия20

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

DKNF

Таблица регистрации студентов на курсы находится в DKNF, потому что все ограничения основаны на ключах и доменах.

  • Ограничение по ключам:
    • комбинация student_id и course_id уникальна для каждой записи.
  • Доменные ограничения:
    • Для каждого студента есть ограничение по количеству курсов, которые он может выбрать selected_courses <= max_courses.
    • Для каждого курса установлено максимальное количество студентов max_students.

Здесь нет зависимостей, которые противоречат ограничениям доменов. Все зависимости, включая количество курсов и количество студентов, контролируются как ключами, так и доменными правилами, что соответствует доменно-ключевой нормальной форме DKNF. Другие таблицы (студентов и курсов) находятся в 3NF, но вся база считается соответствующей DKNF, потому что таблица регистрации удовлетворяет требованиям DKNF.

7. Производство товаров

В этой системе описан процесс производства товаров. Производство каждого товара проходит через несколько этапов, и каждый этап может быть выполнен разными поставщиками.

Таблица этапов производства

🔑 🔗 product_id🔑 🔗 stage_id🔑 🔗 supplier_id
1101201
1102202
2101203
2103201
3102201

Таблица продуктов

🔑 product_idproduct_name
1Стол
2Стул
3Шкаф

Таблица этапов

🔑 stage_idstage_name
101Сборка
102Покраска
103Упаковка

Таблица поставщиков

🔑 supplier_idsupplier_name
201Поставщик 1
202Поставщик 2
203Поставщик 3

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

5NF

Таблица этапов производства находится в 5NF, потому что в ней есть трёхсторонняя зависимость: товар ↔ этап ↔ поставщик.

  • У каждого товара несколько этапов.
  • Каждый этап может выполняться разными поставщиками.
  • У товара может быть несколько поставщиков.

Если разложить такие данные только на пары (товар-этап, этап-поставщик, товар-поставщик), то при соединении мы получим лишние комбинации, которых в реальности нет.

Поэтому мы должны хранить именно комбинацию product_id + stage_id + supplier_id — это и есть пример ситуации для 5NF.

Остальные таблицы (продукты, этапы, поставщики) находятся как минимум в 3NF. Но база данных в целом считается находящейся в 5NF, так как самая сложная таблица соответствует этой нормальной форме.

5NF — данные нельзя разделить на пары, нужно хранить именно тройки.

8. Товары и поставщики

Эта система управляет поставками товаров в магазины. Один и тот же товар может поставляться в разные магазины от разных поставщиков.

Таблица поставок

🔑 🔗 product_id🔑 🔗 store_id🔑 🔗 supplier_id
1101201
1102202
2101201
3102203

Таблица товаров

🔑 product_idproduct_name
1Хлеб
2Молоко
3Яйца

Таблица поставщиков

🔑 supplier_idsupplier_name
201Поставщик 1
202Поставщик 2
203Поставщик 3

Таблица магазинов

🔑 store_idstore_name
101Магазин 1
102Магазин 2
103Магазин 3

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

4NF

Таблица поставок находится в 4NF, потому что у товара есть две независимые многозначные зависимости:

  • один товар может поставляться в несколько магазинов,
  • один товар может иметь нескольких поставщиков.

Каждая строка — это комбинация трёх значений: product_id, store_id, supplier_id. Здесь нет сложной «трёхсторонней» зависимости, как в случае с производством.

Данные можно разложить на пары (товар-магазин и товар-поставщик), и при соединении мы снова получим правильные данные без лишних комбинаций.

Поэтому достаточно требований 4NF.

4NF — данные можно разделить на пары без потерь.

9. Расписание работы сотрудников

Представлено расписание работы сотрудников с указанием периодов их работы и количества отработанных часов. Данные разделены по временным периодам и сотрудникам. Минимальное и Максимальное количество часов ограничены и регулируются на уровне логики СУБД.

Таблица работы сотрудников (по периодам)

🔑 employee_id🔑 work_period
1[01-01-2024:05-01-2024]
1[06-01-2024:10-01-2024]
2[01-01-2024:05-01-2024]
3[03-01-2024:07-01-2024]

Таблица сотрудников

🔑 employee_idemployee_name
1Иван Иванов
2Сергей Сергеев
3John Smith

Таблица часов работы (по периодам)

🔑 employee_id🔑 work_periodhours_worked⚠️ min_hours⚠️ max_hours
1[01-01-2024:05-01-2024]403050
1[06-01-2024:10-01-2024]303050
2[01-01-2024:05-01-2024]403050
3[03-01-2024:07-01-2024]353050

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

6NF

Таблицы находятся в 6NF, так как данные разбиты по каждому возможному атрибуту и используют временные маркеры для отображения периодов работы сотрудников. Каждая таблица хранит только один факт, что соответствует требованиям 6NF.

Добавлено доменное ограничение:

  • для каждого сотрудника в конкретный период должно быть отработано минимум 30 и максимум 50 часов.
  • зависимости управляются как ключами (employee_id, work_period), так и доменами (ограничения по количеству часов работы).

Таким образом, каждая таблица соответствует 6NF, а данные могут быть изменены независимо без нарушения других зависимостей. Таблицы сотрудников и расписания работы по отдельности находятся в 5NF, но база данных считается соответствующей 6NF благодаря разделению данных и использованию доменных ограничений.

10. Сырые данные заказов

Даны данные о заказах, выгруженные из разных источников (чат-бот, Excel, ручной ввод).

Таблица заказов

ABCDE
1order=101; customer=Иванов Иван; phone=+7-999-111-22-33; items=[MLK×2,BRED×1];paid=1
2102Петрова Марияmilk x1, bread x22024/09/01; card
3ID:107CUSTOMER:"Иван Иванов"PAYMENTS:[card,bonus=100]items: milk×1total=N/A
4ЗАКАЗ №104, Клиент: Сергей Сергеев, Адрес: СПб, ул. Ленина, 1; Товары: Молоко(3)ИТОГО=270₽
5order_id=105; items=BRED×1,EGG×10; note="доставить к 18:00"file=photo_105.jpg
6106=ПУСТО

Вопрос: В какой нормальной форме находятся эти данные?

Правильный ответ

Эти данные не находятся даже в UNF.

Про такие данные обычно говорят что это т.н. «сырые данные» (RAW DATA), которые требуют предварительной обработки перед тем как с ними можно будет начать работать средствами какой-либо СУБД.

  • У строк нет фиксированного набора атрибутов.
  • Используются разные форматы (текст, JSON, смешанные записи).
  • Несколько сущностей (клиент, товары, оплата) объединены в одной ячейке.
  • Нельзя выделить корректный ключ.
Последнее обновление: 06.10.2025, 23:12
Следующая
МДК.11.01 - ТЕСТ. Задания на определение нормальных форм БД
© Кафедра информационных технологий ЧУВО «ВШП», 2025. Версия: 0.26.0
Материалы доступны в соответствии с лицензией: