Рассмотрим задачу проектирования БД на базе следующей таблицы:
Таблица «Сессия»
| ФИО студента | Семестр | Дисциплина | Форма отчетности | Оценка | Количество часов | ФИО преподавателя | Должность |
| Иванов В.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | |||
| Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | ||||
| Математический анализ | Экзамен | Раков И.И. | Проф. | ||||
| Программирование | Зачет | Незабудкина З.П. | Преп. | ||||
| Программирование | Экзамен | Зайчиков А.А. | Доцент | ||||
| Линейная алгебра | Зачет | Волков Г.И. | Преп. | ||||
| Линейная алгебра | Экзамен | Волков Г.И. | Преп. |
| ФИО студента | Семестр | Дисциплина | Форма отчетности | Оценка | Количество часов | ФИО преподавателя | Должность | |
| Петрова А.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | ||||
| Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | |||||
| Математический анализ | Экзамен | Раков И.И. | Проф. | |||||
| Программирование | Зачет | Незабудкина З.П. | Преп. | |||||
| Программирование | Экзамен | Зайчиков А.А. | Доцент | |||||
| Линейная алгебра | Зачет | Волков Г.И. | Преп. | |||||
| Линейная алгебра | Экзамен | Волков Г.И. | Преп. | |||||
Шкала оценок: 0 – незачет, 1 – зачет, 2, 3, 4, 5 – оценки.
Этот вариант таблицы «Сессия» не является отношением, т.к. большинство ее столбцов не атомарны. Значение любого атрибута реляционной таблицы является атомарным, если само это значение, в свою очередь, не является реляционной таблицей (отношением). Атомарными являются значения столбцов ФИО СТУДЕНТА, СЕМЕСТР. Остальные столбцы таблицы – множественные.
Эта таблица называется таблицей в ненормализованной форме (ННФ) или ненормализованной таблицей, т. к. содержит одну или несколько повторяющихся групп данных.
Для преобразования данных в отношение необходимо реконструировать таблицу, например, с помощью процесса вставки. Результат имеет вид:
Универсальное отношение «СЕССИЯ»
| ФИО студента | Семестр | Дисциплина | Форма отчетности | Оценка | Количество часов | ФИО преподавателя | Должность |
| Иванов В.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | |||
| Иванов В.П. | Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | |||
| Иванов В.П. | Математический анализ | Экзамен | Раков И.И. | Проф. | |||
| Иванов В.П. | Программирование | Зачет | Незабудкина З.П. | Преп. | |||
| Иванов В.П. | Программирование | Экзамен | Зайчиков А.А. | Доцент | |||
| Иванов В.П. | Линейная алгебра | Зачет | Волков Г.И. | Преп. | |||
| Иванов В.П. | Линейная алгебра | Экзамен | Волков Г.И. | Преп. | |||
| Петрова А.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | |||
| Петрова А.П. | Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | |||
| Петрова А.П. | Математический анализ | Экзамен | Раков И.И. | Проф. | |||
| Петрова А.П. | Программирование | Зачет | Незабудкина З.П. | Преп. | |||
| Петрова А.П. | Программирование | Экзамен | Зайчиков А.А. | Доцент | |||
| Петрова А.П. | Линейная алгебра | Зачет | Волков Г.И. | Преп. | |||
| Петрова А.П. | Линейная алгебра | Экзамен | Волков Г.И. | Преп. |
Такое преобразование приводит к возникновению большого объема избыточных данных. Но полученную таблицу называют универсальным отношением проектируемой БД. В одно универсальное отношение включаются все представляющие интерес атрибуты, и оно может содержать все данные, которые предполагается размещать в БД. При проектировании БД универсальное отношение используется в качестве отправной точки.
Однако при использовании универсального отношения возникают следующие проблемы:
1. Избыточность данных. Значения столбцов таблицы многократно повторяются. Повторяются также и некоторые наборы значений столбцов, например, данные о дисциплине.
2. Потенциальная противоречивость. Если при вводе данных, например, количества часов для дисциплины АНГЛИЙСКИЙ ЯЗЫК, была допущена ошибка, то для ее исправления необходимо найти все строки, содержащие сведения об этой дисциплине, и во всех этих строках произвести изменения. Также при заполнении такой таблицы могут быть использованы различные формы записи одного и того же значения, например: АНГЛ. ЯЗЫК и АНГЛИЙСКИЙ ЯЗЫК, МАТ. АНАЛИЗ и МАТЕМАТИЧЕСКИЙ АНАЛИЗ.
3. Аномалии модификации:
a. аномалии вставки. В БД не может быть записан новый преподаватель, если он не ведет ни одну дисциплину по данному учебному плану. По аналогичным причинам нельзя ввести и новую дисциплину, если она не изучается в рамках данного учебного плана.
b. аномалии удаления. Обратная проблема возникает при необходимости удаления записей, содержащих информацию об успеваемости всех студентов по конкретной дисциплине. При таком удалении будут утрачены и сведения о преподавателе, ведущем данную дисциплину.
c. аномалии обновления. При попытке изменения одного из атрибутов для некоторого преподавателя, например, номера телефона, необходимо обновить соответствующие значения в строках для всех студентов, которых обучает этот преподаватель. Если такой модификации будут подвергнуты не все требуемые строки, то в этом случае БД будет содержать противоречивые сведения.
Решение этих проблем состоит в разделении данных и связей (или декомпозиции), т.е. в выделении в отдельные таблицы сведений о студентах, преподавателях, дисциплинах и результатах сдачи экзаменов:
| Студенты | Преподаватели | Дисциплины | |||||
| № | ФИО студента | № | ФИО преподавателя | № | Дисциплина | ||
| 1. | Иванов В.П. | 1. | Волков Г.И. | 1. | Алгоритмы и структуры данных | ||
| 2. | Петрова А.П. | 2. | Зайчиков А.А. | 2. | Английский язык | ||
| 3. | Сидоров К.К. | 3. | Карпов К.Ю. | 3. | Линейная алгебра | ||
| 4. | Незабудкина З.П. | 4. | Математический анализ | ||||
| 5. | Раков И.И. | 5. | Операционные системы, среды и оболочки | ||||
| 6. | Рыбин К.К. | 6. | Программирование | ||||
| 7. | Соболев И.Г. | 7. | Теория вероятности и математическая статистика | ||||
| 8. | Цветкова А.Ю. |
| Учебный план | ||||||
| № | Дисциплина | Семестр | Количество часов | Форма отчетности | Преподаватель | Должность |
| зачет | Цветкова А.Ю. | Доцент | ||||
| зачет | Волков Г.И. | Преп. | ||||
| экзамен | Волков Г.И. | Преп. | ||||
| зачет | Рыбин К.К. | Ст. преп. | ||||
| экзамен | Раков И.И. | Проф. | ||||
| зачет | Незабудкина З.П. | Преп. | ||||
| экзамен | Зайчиков А.А. | Доцент | ||||
| зачет | Цветкова А.Ю. | Доцент | ||||
| зачет | Карпов К.Ю. | Преп. | ||||
| экзамен | Раков И.И. | Проф. | ||||
| экзамен | Зайчиков А.А. | Доцент | ||||
| экзамен | Соболев И.Г. | Доцент | ||||
| зачет | Незабудкина З.П. | Преп. | ||||
| экзамен | Незабудкина З.П. | Преп. |
| Результаты сессии | ||
| Студент | Учебный план | Оценка |
В таблицах РЕЗУЛЬТАТЫ СЕССИИ и УЧЕБНЫЙ ПЛАН конкретные значения заменены на их номера в других таблицах. Это значительно упрощает процедуру модификации текстовых значений.
Важность нормализации состоит в том, что она позволяет разбить большие отношения, как правило, содержащие большую избыточность информации, на более мелкие логические единицы, группирующие только данные, объединенные "по природе".
Относительно таблиц нормализация - это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта БД, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.
После применения правил нормализации логические группы данных располагаются не более чем в одной таблице. Это дает следующие преимущества:
- данные легко обновлять или удалять;
- исключается возможность рассогласования копий данных;
- уменьшается возможность введения некорректных данных.