Проблема однотипного ввода одинаковых значений
Во многих случаях одни и те же данные вводятся различными способами. Например, ученика можно ввести как «Игорь Иванов», «Иванов Игорь», «Иванов И.». Все эти записи относятся к одному человеку, но использовать такие данные довольно сложно.
Ученик | Курс | Количество уроков | Оценка |
Иванов И. | Базы данных, поток 54 от 12.11.2020 | 4.9 | |
Павлова Анастасия | БД, 12 ноября 2020 г., поток 54 | ||
Игорь Иванов | Linux. Рабочая станция, поток 48 от 02.10.2020 | ||
Иванов Игорь | Основы Python, поток 45 от 18.08.2020 | 4.9 |
Таблица 5. Пример ввода одинаковых данных, записанных в различном формате
Решаем проблемы методом приведения данных к нормальным формам
Для решения проблем, рассмотренных выше, реляционная теория предлагает метод, который основывается на приведении данных к нормальным формам.
Каждая из нормальных форм — набор требований, которым соответствуют данные. Всего сейчас определено восемь нормальных форм, но, с практической точки зрения, мы рассмотрим только первые три. Логика связей данных в современных приложениях редко требует приведения к нормальным формам выше третьей.
|
|
Убираем составные значения, приводим данные к первой нормальной форме
Чтобы решить проблему составных значений, разделим их все на простые (атомарные). Для ученика разделим имя и фамилию на отдельные столбцы, аналогично поступим и с данными о курсе.
Фамилия ученика | Имя ученика | Курс | Номер потока | Дата начала обучения | Количество уроков | Оценка |
Иванов | Игорь | Базы данных | 12.11.2020 | 4.9 | ||
Павлова | Анастасия | Базы данных | 12.11.2020 | |||
Иванов | Игорь | Linux. Рабочая станция | 02.10.2020 | |||
Иванов | Игорь | Основы Python | 18.08.2020 | 4.9 |
Таблица 6. Приведение данных к первой нормальной форме
Полученная структура удовлетворяет требованиям первой нормальной формы:
- Все значения в таблице должны быть простыми.
- Не должно быть повторения строк таблицы с одинаковыми данными — идентичными значениями.