лекция_Технология БД. Основные понятия теории нормализации баз данных
Скачать 21.24 Kb.
|
Основные понятия теории нормализации баз данных. Цель лекции: изучить понятие нормализации базы данных и виды нормальной формы. Проектирование схемы базы данных может быть выполнено двумя путями: - путем декомпозиции (разбиения), когда исходное множество отношений, входящих в схему базы данных заменяется другим множеством отношений (число их при этом возрастает), являющихся проекциями исходных отношений; - путем синтеза, то есть путем компоновки из заданных исходных элементарных зависимостей между объектами предметной области схемы базы данных. При проектировании реляционной базы данных необходимо решить вопрос о наиболее эффективной структуре данных. Основные цели, которые при этом преследуются: обеспечить быстрый доступ к данным в таблицах; исключить ненужное повторение данных (избыточность), которая может явиться причиной ошибок при вводе и нерационального использования дискового пространства компьютера; обеспечить целостность данных таким образом, чтобы при изменении одних объектов автоматически происходили соответствующие изменения связанных с ними объектов. Корректной является схема базы данных, в которой отсутствуют нежелательные зависимости между атрибутами отношении. Реляционная база данных - это набор отношений. Но не просто набор, а нормализованный набор отношений. Классическая технология проектирования реляционных баз данных связана с теорией нормализации, основанной на анализе функциональных зависимостей между атрибутами отношений. Понятие функциональной зависимости является фундаментальным в теории нормализации реляционных баз данных. Мы определим его далее, а пока коснемся смысла этого понятия. Функциональные зависимости определяют устойчивые отношения между объектами и их свойствами в рассматриваемой предметной области. Именно поэтому процесс поддержки функциональных зависимостей, характерных для данной предметной области, является базовым для процесса проектирования. Нормализация – метод создания набора отношений с заданными свойствами на основе требований к данным, установленных в некоторой организации. Процесс приведения реляционных таблиц к стандартному виду называется нормализацией. В теории реляционных баз данных обычно выделяется следующая последовательность нормальных форм: - первая нормальная форма (1NF); - вторая нормальная форма (2NF); - третья нормальная форма (3NF); - нормальная форма Бойса— Кодда (BCNF); - четвертая нормальная форма (4NF); - пятая нормальная форма, или форма проекции-соединения. При практическом проектировании баз данных используются первые три нормальные формы. Процесс проектирования с использованием декомпозиции представляет собой процесс последовательной нормализации схем отношений, при этом каждая последующая итерация соответствует нормальной форме более высокого уровня и обладает лучшими свойствами по сравнению с предыдущей. Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений. Основные свойства нормальных форм: - каждая следующая нормальная форма в некотором смысле улучшает свойства предыдущей; - при переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются. В основе классического процесса проектирования лежит последовательность переходов от предыдущей нормальной формы к последующей. Однако в процессе декомпозиции мы сталкиваемся с проблемой обратимости, то есть возможности восстановления исходной схемы. Таким образом, декомпозиция должна сохранять эквивалентность схем базы данных при замене одной схемы па другую. Схемы базы данных называются эквивалентными, если содержание исходной базы данных может быть получено путем естественного соединения отношений, входящих в результирующую схему, и при этом не появляется новых кортежей в исходной базе данных. При выполнении эквивалентных преобразований сохраняется множество исходных фундаментальных функциональных зависимостей между атрибутами отношений. Функциональные зависимости определяют не текущее состояние базы данных, а все возможные ее состояния, то есть они отражают те связи между атрибутами, которые присущи реальному объекту, который моделируется с помощью базы данных. Поэтому определить функциональные зависимости но текущему состоянию базы данных можно только в том случае, если экземпляр базы данных содержит абсолютно полную информацию (то есть никаких добавлений и модификации базы данных не предполагается). В реальной жизни это требование невыполнимо, поэтому набор функциональных зависимостей задает разработчик, системный аналитик, исходя из глубокого системного анализа предметной области. Из-за небрежного проектирования базы данных появляется избыточностьданных (повторение), которая приводит не только к потере лишнего места; она может вызвать нарушение целостности, то есть привести к пртиворечивости данных в базе данных. Несоотвествия между данными (противоречивость) называются аномалиями. Существут три вида аномалий: - аномалия обновления–противоречивость данных, вызванная их избыточностью и их частичным обновлением; - аномалия удаления–непреднамеренная потеря данных, вызванная удалением других данных; -аномалия ввода – невозможность ввести данные в таблицу, вызванная отсутствием других данных. Очевидно, что аномалии обновления, удаления и ввода нежелательны. Чтобы свести к минимуму проблемы, возникающие из-за аномалий, используется формальный метод, называемый разбиением. Разбиение–процесс разделения таблиц на несколько таблиц в целях избавления от аномалий и поддержания целостности данных. Для этого используются нормальные формы или правила структурирования таблиц. Реляционная таблица находится в первой нормальной форме (1НФ), если никакое значение атрибута не является множеством значений или повторяющейся группой. Иногда говорят, что атрибуты таблицы, которая находится в 1НФ, являются скалярными величинами. То есть отношение находится в первой нормальной форме тогда и только тогда, когда на пересечении каждого столбца и каждой строки находятся только элементарные значения атрибутов. В некотором смысле это определение избыточно, потому что собственно оно определяет само отношение в теории реляционных баз данных. Однако, в силу исторически сложившихся обстоятельств и для преемственности такое определение первой нормальной формы существует. Определение Кодда реляционной таблицы содержит условие, согласно которому реляционная таблица должна удовлетворять первой нормальной форме. То есть в дальнейшем полагаем, что все рассматриваемые реляционные схемы находятся в 1НФ. Не всегда легко определить, является ли атрибут скалярным. Например, дата состоит из трех различных компонентов: дня, месяца и года. Дату можно хранить как три различных атрибута или как единое целое. Выбор зависит от особенностей моделируемой предметной области. Если дата используется как отдельная величина, то она скалярная. Но если система работает с отдельными составляющими даты, лучше хранить ее в качестве набора из трех различных атрибутов. Аналогично можно по-разному моделировать имена: атрибут «Имя» может содержать полное имя (ФИО) элемента, а можно каждую составляющую часть отнести к разным атрибутам; также и с адресом: полный адрес или нет. Таблица находится в первой нормальной форме, если удовлетворяет следующими требованиям: 1) таблица не имеет повторяющихся записей; 2) в таблице должны отсутствовать повторяющиеся группы полей; 3) строки должны быть не упорядочены; 4) столбцы должны быть не упорядочены. Ранее обсужденные правила категорной целостности и целостности на уровне ссылок накладывают ограничения на реляционную схему. Функциональные зависимости (ФЗ) позволяют накладывать дополнительные ограничения. Функциональная зависимость–значение атрибута в кортеже однозначно определяет значение другого атрибута в кортеже. Формально функциональная зависимость определяется следующим образом: если А и В – атрибуты в таблице R, то запись обозначает, что если два кортежа в таблице R имеют одно и то же значение атрибута А, то они имеют одно и то же значение атрибута В. Это определение также применимо, если А и В – множества столбцов, а не просто отдельные столбцы. Обозначение читается следующим образом: А функционально определяет В. Атрибут в левой части ФЗ называется детерминантом. Детерминант–атрибут (атрибуты), значение которого определяет значения других атрибутов кортежей. Реляционная таблица находится во второй нормальной форме (2НФ), если никакие неключевые атрибуты не являются функционально зависимыми лишь от части ключа. Таким образом, вторая нормальная форма может быть нарушена только в том случае, когда ключ составной. Если таблица не удовлетворяет 2НФ, то возникают всевозможные аномалии (ввода, обновления, удаления). Для того, чтобы избавится от аномалий, таблицу необходимо разбить на две реляционные таблицы, каждая из которых удовлетворяет 2НФ. Эти две меньшие таблицы называются проекциями исходной таблицы. Проекция–таблица, состоящая из нескольких выбранных атрибутов другой таблицы. Процесс разбиения на две 2НФ-таблицы состоит из следующих шагов: 1) создается новая таблица, атрибутами которой будут атрибуты исходной таблицы, входящие в противоречащую правилу ФЗ. Детерминант ФЗ становится ключом новой таблицы; 2) атрибут, стоящий в правой части ФЗ, исключается из исходной таблицы; 3) если более одной ФЗ нарушают 2НФ, то шаги 1 и 2 повторяются для каждой такой ФЗ; 4) если один и тот же детерминант входит в несколько ФЗ, то все функционально зависящие от него атрибуты помещаются в качестве неключевых атрибутов в таблицу, ключом которой будет детерминант. Реляционная таблица имеет третью нормальную форму (3НФ), если для любой функциональной зависимости , Х является ключом (то есть детеминант является ключом). Отсюда следует, что любая таблица, удовлетворяющая 3НФ, таже удовлетворяет и 2НФ. Если таблица не соответсвует 3НФ, то возникает избыточность данных, которая также приводит ко всевозможным аномалиям. Решение этих проблем – тоже разбиение. Поскольку 3НФ-таблицы всегда удовлетворяют 2НФ, достаточно пользоваться критерием третьей нормальной формы. Если каждый детерминант в таблице является ключом этой таблицы, то таблицы удовлетворяет первой, второй и третьей нормальным формам. Это упрощает процесс нормализации, так как нужно проверить только один критерий. Надо отметить, что данное определение третьей нормальной формы соответствует в некоторых источниках нормальной форме Бойса—Кодда. В большинстве случаев достижение третьей нормальной формы а считается достаточным для реальных проектов баз данных, однако в теории нормализации существуют нормальные формы высших порядков, которые уже связаны не с функциональными зависимостями между атрибутами отношений, а отражают более тонкие вопросы семантики предметной области и связаны с другими видами зависимостей. Первая нормальная форма запрещает иметь многозначные атрибуты. Однако существует много ситуаций, когда требуется многозначность. Условие, обеспечивающее независимость атрибутов путем обязательного повтора значений, называется многозначной зависимостью (МЗЗ). МЗЗ является таким же ограничительным условием, как и ФЗ, так как они требуют огромного числа повторений значений данных. Важный этап нормализации состоит в избавлении от многозначных зависимостей. Таблица находится в четвертой нормальной форме, если она находится в третьей нормальной форме и не имеет многозначных зависимостей. Так как проблема многозначных зависимостей возникает в связи с многозначными атрибутами, то проблема многозначных зависимостей решается размещением каждого многозначного атрибута в свою собственную таблицу вместе с ключом, от которого атрибут зависит. Рассмотрим конкретную ситуацию, понятную всем студентам. Пусть дано отношение, которое моделирует предстоящую сдачу экзаменов на сессии. Допустим, оно имеет вид: (Номер зач.кн,. Группа, Дисциплина). Перечень дисциплин, которые должен сдавать студент, однозначно определяется не его фамилией, а номером группы (то есть специальностью). В данном отношении существуют следующие две многозначные зависимости: Группа -» Дисциплина и Группа -» Номер зач.кн. Это означает, что каждой группе однозначно соответствует перечень дисциплин по учебному плану и номер группы определяет список студентов, которые в этой группе учатся. Если мы будем работать с исходным отношением, то мы не сможем хранить информацию о новой группе и ее учебном плане — перечне дисциплин, которые должна пройти группа до тех пор, пока в нее не будут зачислены студенты. При изменении перечня дисциплин по учебному плану, например, при добавлении новой дисциплины, внести эти изменения в отношение для всех студентов, занимающихся в данной группе, весьма затруднительно. С другой стороны, если мы добавляем студента в уже существующую группу, то мы должны добавить множество кортежей, соответствующих перечню дисциплин для данной группы. Эти аномалии модификации отношения как раз и связаны с наличием двух многозначных зависимостей. В этом примере можно произвести декомпозицию исходного отношения в два отношения: (Номер зач.кн.. Группа), (Группа, Дисциплина). Оба эти отношения находятся в четвертой нормальной форме и свободны от отмеченных аномалий. Действительно, обе операции модификации теперь упрощаются: добавление нового студента связано с добавлением всего одного кортежа в первое отношение, а добавление новой дисциплины выливается в добавление одного кортежа во второе отношение. Кроме того, во втором отношении мы можем хранить любое количество групп с определенным перечнем дисциплин, в которые пока еще не зачислены студенты. Последней нормальной формой является пятая нормальная форма 5NF, которая редко используется на практике. В большей степени она является теоретическим исследованием. |