- •Введение
- •Проектирование базы данных
- •1.1. Требования, предъявляемые к базе данных
- •1.2. Этапы жизненного цикла базы данных
- •1.3. Модель "сущность-связь"
- •1.4. Преобразование er-модели в реляционную
- •Нормализация таблиц
- •1.6. Этапы проектирования базы данных и их процедуры
- •1.6.1. Процедуры концептуального проектирования.
- •1.6.2. Процедуры логического проектирования.
- •1.6.3. Процедуры физического проектирования.
- •Создание базы данных.
- •Связь базы данных.
- •Создание таблиц базы данных.
- •Создание запросов базы данных.
- •Создание форм базы данных.
- •Создание отчёта базы данных.
- •Создание макросов базы данных.
- •Sql запросы базы данных.
- •Список источников.
Нормализация таблиц
Нормализация – это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.
Реляционная база данных считается эффективной, если она обладает приведенными ниже характеристиками.
1. Минимизация избыточности данных. В базе данных присутствует избыточность, если одни и те же данные находятся в нескольких местах. Вследствие этого память компьютера используется неэкономно и времени на корректировку данных тратится больше. Так в табл. 1 содержится много избыточной информации.
Рис. 1.6. Реляционная модель предметной области ОБЩЕПИТ
Примечание. Если таблица является объектом реляционной базы данных, то ее столбцы называются полями, а строки - записями.
Если, например, изменится название курса "Английский" на "Английский для делового общения", то его надо заменить во всех записях о тех студентах, которые изучают данный курс.
2. Минимальное использование отсутствующих значений (Null-значений). В нашем примере неясно, означают ли Null-значения атрибута "Преподаватель", что для группы А2 не определен преподаватель или его Ф.И.О. не введено. Из-за неопределенности интерпретации Null-значений их использование желательно свести к минимуму.
3. Предотвращение потери информации. Если, например, студент Шкляр Е.К. решит не изучать немецкий язык, то придется удалить запись со сведения ми о нем и тогда вообще будет потеряна информация о данном курсе. Минимизировать избыточность данных позволяет процесс, называемый нормализацией таблиц. Нормализацию можно было использовать для получения эффективных структур данных, созданных в результате преобразования ER-диаграмм в таблицы в предыдущем параграфе.
Но чтобы пояснить этот процесс, будем исходить из описания предметной области ОБЩЕПИТ, данного в параграфе 1.3, и предположения, что на его основе была разработана база данных, состоящая из следующих трёх таблиц:
Табл. 1. Таблица Блюда
Номер блюда |
Название блюда |
Вид блюда |
Выход блюда(г.) |
Изображение |
1 |
Суп из утки |
Первые блюда |
300 |
Рис. |
2 |
Чёрный суп |
Первые блюда |
300 |
Рис. |
3 |
Рис с грибами |
Вторые блюда |
450 |
Рис. |
4 |
Креветки с сыром |
Вторые блюда |
450 |
Рис. |
Примечание. Ключи комбинация НБ, НЗБ.
Табл. 2. Таблица Ежедневное приготовление
Номер приготовления |
Номер блюда |
Кол-во порций |
Дата приготовления |
1 |
1 |
20 |
19.02.2017 |
2 |
1 |
10 |
15.02.2017 |
3 |
1 |
21 |
18.02.2017 |
4 |
1 |
22 |
20.02.2017 |
Примечание. Ключи комбинация НП, НБ.
Были выделены три нормальные формы - 1НФ, 2НФ, ЗНФ. Позже стали выделять нормальную форму Бойса-Кодда (НФБК), а затем 4НФ и 5НФ. Каждая последующая нормальная форма вводит определенные ограничения на хранимые в базе данные.
Реляционная база данных считается эффективной, если все ее таблицы находятся как минимум в ЗНФ. Приведение к ЗНФ осуществляется, если есть основание для этого.
Определение 1НФ
Основные критерии:
Все поля таблицы содержат только простые неделимые значения.
Все элементы внутри ячеек должны быть атомарными (не списками).
Другими словами, элемент является атомарным, если его нельзя разделить на части, которые могут использовать в таблице независимо друг от друга. Таблицы БЛЮДА и ПРИГОТОВЛЕНИЕ удовлетворяют требованиям 1НФ.
Определение 2НФ
Основные критерии:
Таблица должна находиться в первой нормальной форме.
Любое её поле, не входящее в состав первичного ключа, функционально полно зависит от первичного ключа.
Функциональная зависимость — это понятие, отображающее определенную семантическую связь между полями таблицы.
В таблице ПРИГОТОВЛЕНИЕ неключевые поля КП, ДП функционально зависят от ключа (НП, НБ), что запишем
НП, НБ КП, ДП
Кроме того, они функционально зависят от подмножества ключа - НБ, что запишем
НБ КП, ДП
Следовательно, неключевые КП, ДП находятся в частичной функциональной зависимости от первичного ключа (НБ, НЗС) и нарушаются требования 2НФ. Эти поля надо из таблицы ПРИГОТОВЛЕНИЕ удалить. Полученную в результате этого таблицу назовем ПРИГОТОВЛЕНИЕ-БЛЮДО (табл. 3), которая имеет вид
Номер приготовления |
Номер блюда |
1 |
1 |
2 |
1 |
3 |
1 |
4 |
1 |
Эта таблица удовлетворяет требованиям 2НФ.
Удаленные неключевые поля помещаются в новую таблицу совместно с подмножеством НБ, от которого они зависят. И это подмножество будет первичным ключом новой таблицы ПРИГОТОВЛЕНИЕ (табл. 4) вида
Табл. 4. Таблица Приготовление
Номер блюда |
Кол-во порций |
Дата приготовления |
1 |
20 |
19.02.2017 |
2 |
10 |
15.02.2017 |
3 |
21 |
18.02.2017 |
4 |
22 |
18.02.2017 |
Новая таблица ПРИГОТОВЛЕНИЕ также удовлетворяет требованиям 2НФ. Ее неключевые поля функционально полно зависят от первичного ключа.
Полученные таблицы 7, 8 не содержат избыточной информации, и нет основания приводить их к ЗНФ.
Таблица БЛЮДО удовлетворяет требованиям 2НФ, так как ее неключевые поля ВБ, В, И функционально полно зависят от первичного ключа
НБ ВБ, В, И
Но в таблице БЛЮДО повторяется информация о виде блюда для всех блюд, обрабатываемых им. Поэтому ее надо привести к ЗНФ.
Определение 3НФ
Основные критерии:
Таблица находится во второй нормальной форме.
Любой её не ключевой атрибут функционально зависит только от первичного ключа. Не содержит транзитивных зависимостей.
Транзитивной зависимостью называется функциональная зависимость между неключевыми полями. В таблице БЛЮДО она наблюдается
НБВБ, ВЫБ
Следовательно, нарушаются требования ЗНФ. Из таблицы БЛЮДА надо удалить поля, участвующие в этой транзитивной зависимости, — ВБ, ВЫБ.
Получится таблица, характеризующая счет (табл. 5), вида
Табл. 5. Таблица Блюда
Номер блюда |
Название блюда |
Изображение |
1 |
Суп из утки |
Рис. |
2 |
Чёрный суп |
Рис. |
3 |
Рис с грибами |
Рис. |
4 |
Креветки с сыром |
Рис. |
Затем создается новая таблица, в которую помещаются удаленные поля и поле, от которого они зависят (табл. 6). Она имеет вид
Табл. 6. Таблица Блюда
Вид блюда |
Выход блюда(г.) |
Первые блюда |
300 |
Вторые блюда |
450 |
Полученные таблицы 5, 6 приведены к ЗНФ.
