Упрощаем зависимости между значениями, приводим данные ко второй нормальной форме

Упрощаем зависимости между значениями, приводим данные ко второй нормальной форме

Следующий шаг — упрощение зависимостей в структуре таблицы. В нашем случае мы определили, что атрибуты «Фамилия ученика», «Имя ученика», «Курс», «Номер потока», «Дата начала обучения», «Оценка» относятся к ученику, а атрибут «Количество уроков» — к курсу.

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

Фамилия ученика Имя ученика Курс Номер потока Дата начала обучения Оценка
Иванов Игорь Базы данных   12.11.2020 4.9
Павлова Анастасия Базы данных   12.11.2020  
Иванов Игорь Linux. Рабочая станция   02.10.2020  
Иванов Игорь Основы Python   18.08.2020 4.9


Таблица 7. Приведение ко второй нормальной форме, таблица оценок

 

Курс Количество уроков
Базы данных  
Linux. Рабочая станция  
Основы Python  


Таблица 8. Приведение ко второй нормальной форме, таблица курсов

Полученная структура удовлетворяет требованиям второй нормальной формы:

  1. Структура должна находиться в первой нормальной форме.
  2. В каждой из таблиц все столбцы атрибутов должны относиться к (зависеть от) одной ключевой сущности.

Решаем проблему транзитивных связей и унифицируем ввод значений, приводим данные к третьей нормальной форме

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

В результате получим структуру, состоящую из четырёх таблиц: «Курсы», «Потоки», «Ученики» и «Оценки». Обратим внимание, что в таблицах курсов, потоков и учеников добавился служебный ключевой столбец. Он используется, чтобы была возможность ссылаться на соответствующие значения в других таблицах. Ключ строки также рассматривается как некоторый условный номер, или, другими словами, идентификатор записи, уникальный в пределах таблицы. В таблице не указывается несколько записей с одинаковым ключевым значением.

Ключ курса Название курса Количество уроков
  Базы данных  
  Linux. Рабочая станция  
  Основы Python  


Таблица 9. Приведение к третьей нормальной форме, таблица курсов

Ключ потока Номер потока Ключ курса Дата начала обучения
      18.08.2020
      02.10.2020
      12.11.2020


Таблица 10. Приведение к третьей нормальной форме, таблица потоков

Ключ ученика Фамилия Имя
  Иванов Игорь
  Павлова Анастасия


Таблица 11. Приведение к третьей нормальной форме, таблица учеников

 

 

Ключ ученика Ключ потока Оценка
    4.9
     
     
    4.9


Таблица 12. Приведение к третьей нормальной форме, таблица оценок

Такая структура соответствует требованиям третьей нормальной формы:

  1. Структура таблиц должна соответствовать второй нормальной форме.
  2. В таблицах должны отсутствовать транзитивные зависимости.
  3. Все повторяющиеся неключевые атрибуты выносятся в отдельные таблицы.

На этом этапе работу по преобразованию данных мы выполнили, а структура соответствует требованиям реляционной модели.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: