Цель лекции: показать возможность эффективного использования формальных методов построения оптимальной (по определенным показателям) структуры реляционной базы данных путем нормализации схем отношений.
При представлении концептуальной схемы в виде реляционной модели возможны различные варианты выбора схем отношений. Одни варианты выбора рассматривались в предыдущих разделах (п. 6.2.3), другие получаются объединением (или разбиением) некоторых схем отношений. От правильного выбора схем отношений, представляющих концептуальную схему, в значительной степени будет зависеть эффективность функционирования базы данных.
Рассмотрим для примера конкретную схему отношений и проанализируем её недостатки. Предположим, что данные о студентах, факультетах, специальностях, включены в таблицу со следующей схемой отношения: СТУДЕНТ (Код студента, Фамилия, Название факультета, Название специальности).
Эта схема отношений обусловливает следующие недостатки соответствующей базы данных:
В
Нормализация. Первая нормальная форма.
Построение рационального варианта схем отношений (обладающего лучшими свойствами при операциях включения, модификации и удаления данных, чем все остальные наборы схем) осуществляется путем так называемой
Отношение находится в первой
Рассмотрим следующий пример.
Таблица представляет сущность ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ
| Код студента | Фамилия | Код экзамена | Предмет и дата | Оценка |
|---|---|---|---|---|
| 1 | Сергеев | 1 | Математика 5.06.08 | 4 |
| 2 | Иванов | 1 | Математика 5.06.08 | 5 |
| 1 | Сергеев | 2 | Физика 9.06.08 | 5 |
| 2 | Иванов | 2 | Физика 9.06.08 | 5 |
Теперь на пересечении любой строки и любого столбца находится одно значение и, следовательно, данная таблица находится в первой
Далее отношение, представленное в первой
Если эти предположения не выполняются, то процесс
Прежде чем перейти к построению второй
Пусть R(A1, A2, ..., An) – схема отношения, а X и Y – подмножества {A1, A2, ..., An}.
R – это утверждение вида "Если два кортежа R совпадают по атрибутам множества $$X\subset \{ A_{1}, A_{2}, \dots , A_{n}\}$$ (т.е. эти кортежи имеют в соответствующих друг другу компонентах одни и те же значения для каждого атрибута множества X ), то они должны совпадать и по атрибутам множества $$Y\subset \{ A_{1}, A_{2}, \dots , A_{n}\}$$. Формально эта зависимость записывается выражением X -> Y, причем говорится, что X функционально определяет Y.
Часто используется другое утверждение: X функционально определяет Y или Y функционально зависит от X ( обозначается X -> Y ) тогда и только тогда, когда каждое значение множества X отношения R связано с одним значением множества Y отношения R. Иначе говоря, если два кортежа R совпадают по значению X, они совпадают и по значению Y.
Замечание. Вообще говоря, под термином "отношение" могут подразумеваться два понятия:
Функциональные зависимости характеризуют все отношения, которые могут быть значениями схемы отношения R в принципе. Поэтому единственный способ определить функциональные зависимости – внимательно проанализировать семантику (смысл) атрибутов.
Функциональные зависимости являются, в частности, ограничениями целостности, поэтому целесообразно проверять их при каждом обновлении базы данных.
Пример функциональных зависимостей для отношения ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ
Код студента -> Фамилия Код студента, Код экзамена -> Оценка
Пример функциональных зависимостей для отношения СТУДЕНТ, приведенного в начале настоящей лекции
Код студента -> Фамилия, Код студента -> Факультет
Заметим, что последняя зависимость существует при условии, что один студент не может обучаться на нескольких факультетах.
Полное множество функциональных зависимостей
Для каждого отношения существует вполне определенное множество функциональных зависимостей между атрибутами данного отношения. Причем из одной или более функциональных зависимостей, присущих рассматриваемому отношению, можно вывести другие функциональные зависимости, также присущие этому отношению.
Заданное множество функциональных зависимостей для отношения R обозначим F, полное множество функциональных зависимостей, которые логически можно получить из F, называется замыканием F и обозначается F+.
Если множество функциональных зависимостей совпадает с замыканием данного множества, то такое множество функциональных зависимостей называется полным.
Введенные понятия позволяют формально определить понятие ключа.
Пусть существует некоторая схема R с атрибутами A1A2...An, F – некоторое множество функциональных зависимостей и X – некоторое подмножество R. Тогда X называется ключом, если, во-первых, в F+ существует зависимость X -> A1A2...An и, во-вторых, ни для какого подмножества Y, входящего в X, зависимость Y -> A1A2...An не принадлежит F+.
Полной функциональной зависимостью называется зависимость неключевого атрибута от всего составного ключа.
Частичной функциональной зависимостью будем называть зависимость неключевого атрибута от части составного ключа.
Для вычисления
Пусть известна некоторая схема отношения R{A1, A2, ..., An} с множеством атрибутов U={A1, A2, ..., An} и множество функциональных зависимостей F, заданных на множестве U.
Аксиома рефлексивности. Если Y входит в X, а X входит в $$U (Y\subseteq X\subseteq U)$$, то X->Y логически следует из F. Это правило дает тривиальные зависимости, так как в них правая часть содержится в левой части.
Аксиома пополнения. Если X->Y и Z есть подмножество U, то XZ->YZ. В данном случае X->Y либо содержалась в исходном множестве F, либо может быть выведена из F с использованием описываемых аксиом.
Аксиома транзитивности. Если X->Y и Y->Z, то X->Z.
Справедлива следующая теорема.
Это значит, что используя их мы выведем все возможные функциональные зависимости, логически следующие из F, и не выведем никаких лишних зависимостей.
Существует несколько других правил вывода, которые следуют из
Правило самоопределения. X->Х.
Правило объединения. Если X->Y и X->Z, то $$X\to Y\cup Z$$.
Правило псевдотранзитивности. Если X->Y и $$W\cup Y\to Z$$, то $$X\cup W\to Z$$.
Правило композиции. Если X->Y и Z->W, то $$X\cup Z\to Y\cup W$$.
Правило декомпозиции. Если X->Y и Z входит в Y, то X->Z.
Надо отметить, что вычисление
Последовательный переход от одной
R = {А1, А2, ...,Аn} называется замена ее совокупностью подмножеств R, таких, что их объединение дает R. При этом допускается, чтобы подмножества были пересекающимися.
Алгоритм декомпозиции основан на следующей теореме.
Теорема о декомпозиции. Пусть R(A, B, C) – отношение, A, B, C – атрибуты.
Если R удовлетворяет зависимости A->B, то R равно соединению его проекций A, B и A, C
R(A, B, C) = R(A, B), R(A, C)
При
Вторым важнейшим желательным свойством декомпозиции является свойство сохранения функциональных зависимостей. Стремление к тому, чтобы декомпозиция сохраняла зависимости, естественно. Функциональные зависимости являются некоторыми ограничениями на данные. Если декомпозиция не обладает этим свойством, то для того чтобы проверить, не нарушаются ли при вводе данных условия целостности (функциональные зависимости), нам приходится соединять все проекции.
Таким образом, для правильно построенного проекта базы данных необходимо, чтобы декомпозиции обладали свойством соединения без потерь, и желательно, чтобы они обладали свойством сохранения функциональных зависимостей.
Вторая нормальная форма (2НФ)
Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут зависит от всего первичного ключа (не зависит от части ключа).
Для перевода отношения в 2НФ необходимо, используя
Третья нормальная форма (3НФ)
Отношение находится в 3НФ, если оно находится в 2НФ и каждый ключевой атрибут нетранзитивно зависит от первичного ключа.
Отношение находится в 3НФ в том и только том случае, если все неключевые атрибуты отношения взаимно независимы и полностью зависят от первичного ключа.
Оказывается, что любая схема отношений может быть приведена к 3НФ декомпозицией, обладающей свойствами соединения без потерь и сохраняющей зависимости.
Мотивировка третьей нормальной формы
Третья
К сожалению, 3НФ не предотвращает все возможные аномалии.
Нормальная форма Бойса-Кодда (НФБК)
Если в R для каждой зависимости X->A, где А не принадлежит X, X включает в себя некоторый ключ, то говорят, что данное отношение находится в
Детерминантом функциональной зависимости называется минимальная группа атрибутов, от которой зависит некоторый другой атрибут или группа атрибутов, причем эта зависимость нетривиальная.
Отношение находится в НФБК тогда и только тогда, когда каждый его детерминант является потенциальным ключом.
НФБК является более строгой версией 3НФ. Иными словами, любое отношение, находящееся в НФБК, находится в 3НФ. Обратное неверно.
Мотивировка нормальной формы Бойса-Кодда
В
Для улучшения структуры реляционной базы данных (устранения возможных аномалий) необходимо привести все таблицы базы данных к третьей
Продолжим рассмотрение примера с отношением ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ
В начале этой лекции мы привели отношение к первой
| Код студента | Фамилия | Код экзамена | Предмет | Дата | Оценка |
|---|---|---|---|---|---|
| 1 | Сергеев | 1 | Математика | 5.08.03 | 4 |
| 2 | Иванов | 1 | Математика | 5.08.03 | 5 |
| 1 | Сергеев | 2 | Физика | 9.08.03 | 5 |
| 2 | Иванов | 2 | Физика | 9.08.03 | 5 |
Ключом данного отношения будет совокупность атрибутов – Код студента и Код экзамена.
Для более краткой записи процесса нормализации введем следующие обозначения:
КС – код студента, КЭ – код экзамена, Ф – фамилия, П – предмет, Д – дата, О - оценка.
Выпишем функциональные зависимости
КС, КЭ -> Ф, П, Д, О КС, КЭ -> Ф КС, КЭ -> П КС, КЭ -> Д КС, КЭ -> О КЭ -> П КЭ -> Д КС -> Ф
В соответствии с определением, отношение находится во второй П, Д, Ф зависят от части ключа. Чтобы избавиться от этих зависимостей необходимо произвести декомпозицию отношения. Для этого используем теорему о декомпозиции.
Имеем отношение R(КС, Ф, КЭ, П, Д, О). Возьмем зависимость КС -> Ф в соответствии с формулировкой теоремы исходное отношение равно соединению его проекций R1(КС, Ф) и R2(КС, КЭ, П, Д, О).
В отношении R1(КС, Ф) существует КС -> Ф, ключ КС – составной, не ключевой атрибут Ф не зависит от части ключа. Это отношение находится в 2НФ. Так как в этом отношении нет транзитивных зависимостей, отношение R(КС, Ф) находится в 3НФ, что и требовалось.
Рассмотрим отношение R2(КС, КЭ, П, Д, О) с составным ключом КС, КЭ. Здесь есть зависимость КЭ -> П, КЭ -> Д, КЭ -> П, Д. Атрибуты П,Д зависят от части ключа, следовательно отношение не находится в 2НФ. В соответствии с теоремой о декомпозиции исходное отношение (используем функциональную зависимость КЭ -> П, Д) равно соединению проекций R3(КЭ, П, Д), R4(КС, КЭ, О). В отношении R3( КЭ, П, Д) существуют функциональные зависимости КЭ -> П, КЭ -> Д, КЭ -> П, Д. Зависимости неключевых атрибутов от части ключа нет, следовательно отношение находится в 2НФ. Транзитивных зависимостей в этом отношении так же нет, следовательно отношение находится в 3НФ.
Таким образом, исходное отношение приведено в к трем отношениям, каждое из которых находится в третьей R1(КС, Ф), R3(КЭ, П, Д), R4(КС, КЭ, О).
Заметим, что в отношении R4 атрибуты КС, КЭ являются внешними ключами, используемыми для установления связей с другими отношениями. Представим полученную модель в виде диаграммы объектов-связей (ER-диаграммы). Для наглядности и возможности последующего программирования перейдем к английским названиям объектов (отношений) и атрибутов.
Отношение R1 представляет объект student с атрибутами id_st (первичный ключ), surname.
Отношение R3 представляет объект exam_st c атрибутами id_ex (первичный ключ), subject, date.
Отношение R4 представляет объект mark_st c атрибутами id_st (внешний ключ), id_ex (внешний ключ), mark. Первичный ключ здесь id_st, id_ex.
Соответствующая ER-диаграмма изображена на рис 8.1.
(рис 8.1) ER-диаграмма, представляющая рассмотренный фрагмент предметной областиНапомним, что под целостностью базы данных понимается то, что в ней содержится полная, непротиворечивая и адекватно отражающая предметную часть (правильная) информация. Поддержка целостности в реляционных БД основана на выполнении следующих требований.
1. Первое требование называется требованием целостности сущностей. Объекту или сущности реального мира в реляционных БД соответствуют кортежи отношений. Конкретно требование состоит в том, что любой кортеж любого отношения отличим от любого другого кортежа этого отношения, т.е., другими словами, любое отношение должно обладать определенным первичным ключом. Это требование автоматически удовлетворяется, если в системе не нарушаются базовые свойства отношений.
2. Второе требование называется требованием целостности по ссылкам. Очевидно, что при соблюдении нормализованности отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений. Связь между отношениями осуществляется с помощью миграции ключа.
Пример внешнего ключа.
СТУДЕНТ (Код студента, Фамилия) сдает ЭКЗАМЕН (Код студента, Предмет, Оценка).
Атрибут Код студента сущности ЭКЗАМЕН называется внешним ключом, поскольку его значения однозначно характеризуют сущности, представленные кортежами некоторого другого отношения – отношения Студент (мы предполагаем, что поле Код студента является ключом отношения Студент).
Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом.
Требование целостности по ссылкам или требование внешнего ключа состоит в том, что для каждого значения внешнего ключа в ссылающемся отношении в отношении, на которое ведет ссылка, должен найтись кортеж с таким же значением первичного ключа либо значение внешнего ключа должно быть неопределенным (т.е. ни на что не указывать).
Ограничения целостности сущности и по ссылкам должны поддерживаться СУБД. Для соблюдения целостности сущности достаточно гарантировать отсутствие в любом отношении кортежей с одним и тем же значением первичного ключа. (В Access для этого предназначена специальная реализация целочисленного поля – поле типа "Счетчик".) С целостностью по ссылкам дела обстоят несколько более сложно.
Понятно, что при обновлении ссылающегося отношения (вставке новых кортежей или модификации значения внешнего ключа в существующих кортежах) достаточно следить за тем, чтобы не появлялись некорректные значения внешнего ключа.
Но как быть при удалении кортежа из отношения, на которое ведет ссылка?
Здесь существуют три подхода, каждый из которых поддерживает целостность по ссылкам. Первый подход заключается в том, что запрещается производить удаление кортежа, на который существуют ссылки (т.е. сначала нужно либо удалить ссылающиеся кортежи, либо соответствующим образом изменить значения их внешнего ключа). При втором подходе при удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешнего ключа автоматически становится неопределенным. Наконец, третий подход (каскадное удаление) состоит в том, что при удалении кортежа из отношения, на которое ведет ссылка, из ссылающегося отношения автоматически удаляются все ссылающиеся кортежи.
В развитых реляционных СУБД обычно можно выбрать способ поддержания целостности по ссылкам для каждой отдельной ситуации определения внешнего ключа. Конечно, для принятия такого решения необходимо анализировать требования конкретной прикладной области.
Заметим, что все современные СУБД поддерживают и целостность сущностей, и целостность по ссылкам, но позволяют пользователям выключать данные ограничения и, таким образом, строить базы данных, не соответствующие реляционной модели. Опыт показывает, что отход от основных положений реляционной модели приводит к краткосрочному выигрышу – алгоритмы становятся проще, но впоследствии серьезно усложняют задачу, особенно ее сопровождение.
Краткие итоги: Лекция посвящена вопросам оптимизации схем отношений (структуры реляционной базы данных) на основе формальных методов
В лекции рассматриваются вопросы использования формального аппарата для оптимизации схем отношений. Сформулирована проблема
Вопросы настоящей лекции рассматриваются в [-].
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.