Л е к ц и я №05. Базы данных. Основные понятия реляционных баз данных 1. Некоторые термины и определения, используемые при работе с БД (ОснБД) ....................................... 1 2. Структура данных (Теория нормальных форм НФ) .................................................................................... 3 3. Теория нормальных форм ............................................................................................................................ 5 3.1. Проблемы проектирования (Введение в реляционные базы (лекция 7)) ............................................ 5 3.2. Функциональные зависимости (Теория НФ) ........................................................................................... 6 3.3. 1NF – первая нормальная форма (Теория НФ) ...................................................................................... 7 3.4. 2NF – вторая нормальная форма (Теория НФ) ...................................................................................... 9 3.5. 3NF – третья нормальная форма (Теория нормальных форм) ........................................................... 10 3.6. BCNF – нормальная форма Бойса-Кодда (Теория НФ) ....................................................................... 11 3.7. 4NF – нормальная форма и многозначные зависимости (Теория НФ) .............................................. 13 3.8. 5NF – пятая нормальная форма и зависимости по соединению (Теория НФ) .................................. 14 4. Заключение............................................................................................................................ 18 СЛАЙД №2 1. Некоторые термины и определения, используемые при работе с БД (ОснБД) Используемая терминология различна в теории реляционных баз данных, на стадии проектирования концептуальной модели и при практической работе с физической моделью и с базой данных, как это показано далее. Приведенные термины очень важны и для начинающих изучать данный предмет могут оказаться сложными для понимания. К этим формулировкам рекомендуется периодически возвращаться для их четкого усвоения. Основная часть первоисточников по теории баз данных, а также средства разработчиков используют английскую терминологию, поэтому для большинства русских терминов приведены соответствующие английские значения. База данных (БД, database) – поименованная совокупность структурированных данных, относящихся к определенной предметной области. Предметная область – некоторая часть реально существующей системы, функционирующая как самостоятельная единица. Полная предметная область может представлять собой экономику страны или группы союзных государств, однако на практике для информационных систем наибольшее значение имеет предметная область масштаба отдельного предприятия или корпорации. Система управления базами данных (СУБД) - комплекс программных и языковых средств, необходимых для создания и модификации базы данных, добавления, модификации, удаления, поиска и отбора информации, представления информации на экране и в печатном виде, разграничения прав доступа к информации, выполнения других операций с базой. Реляционная БД – основной тип современных баз данных. Состоит из таблиц, между которыми могут существовать связи по ключевым значениям. Таблица базы данных (table) – регулярная структура, которая состоит из однотипных строк (записей, records), разбитых на столбцы (поля, fields). В теории реляционных баз данных синоним таблицы – отношение (relation), в котором строка называется кортежем, а столбец называется атрибутом. СЛАЙД №3 2 В концептуальной модели реляционной БД аналогом таблицы является сущность (entity), с определенным набором свойств – атрибутов, способных принимать определенные значения (набор допустимых значений – домен). Ключевой элемент таблицы (ключ, regular key) – такое ее поле (простой ключ) или строковое выражение, образованное из значений нескольких полей (составной ключ), по которому можно определить значения других полей для одной или нескольких записей таблицы. На практике для использования ключей создаются индексы – служебная информация, содержащая упорядоченные сведения о ключевых значениях. В реляционной теории и концептуальной модели понятие «ключ» применяется для атрибутов отношения или сущности. Первичный ключ (primary key) – главный ключевой элемент, однозначно идентифицирующий строку в таблице. Могут также существовать альтернативный (candidate key) и уникальный (unique key) ключи, служащие также для идентификации строк в таблице. В реляционной теории первичный ключ – минимальный набор атрибутов, однозначно идентифицирующий кортеж в отношении. В концептуальной модели первичный ключ – минимальный набор атрибутов сущности, однозначно идентифицирующий экземпляр сущности. Связь (relation) – функциональная зависимость между объектами. В реляционных базах данных между таблицами устанавливаются связи по ключам, один из которых в главной (parent, родительской) таблице - первичный, второй - внешний ключ - во внешней (child, дочерней) таблице, как правило, первичным не является и образует связь "один ко многим" (1:N). В случае первичного внешнего ключа связь между таблицами имеет тип "один к одному" (1:1). Информация о связях сохраняется в базе данных. Внешний ключ (foreign key) – ключевой элемент подчиненной (внешней, дочерней) таблицы, значение которого совпадает со значением первичного ключа главной (родительской) таблицы. Ссылочная целостность данных (referential integrity) – набор правил, обеспечивающих соответствие ключевых значений в связанных таблицах. СЛАЙД №4 Хранимые процедуры (stored procedures) – программные модули, сохраняемые в базе данных для выполнения определенных операций с информацией базы. Триггеры (triggers) – хранимые процедуры, обеспечивающие соблюдение условий ссылочной целостности данных в операциях изменения первичных ключей (возможно каскадное изменение данных), удалении записей в главной таблице (каскадное удаление в дочерних таблицах) и добавлении записей или изменении данных в дочерних таблицах. Объект (object) – элемент информационной системы, обладающий определенными свойствами (properties) и определенным образом реагирующий на внешние события (events). Система – совокупность взаимодействующих между собой и с внешним окружением объектов. Репликация базы данных – создание копий базы данных (replica), которые могут обмениваться обновляемыми данными или реплицированными формами, отчетами или другими объектами в результате выполнения процесса синхронизации. Транзакция – изменение информации в базе в результате выполнения одной операции или их последовательности, которое должно быть выполнено полностью или не выполнено вообще. В СУБД существуют специальные механизмы обеспечения транзакций. 3 Язык SQL (Structured Query Language) – универсальный язык работы с базами данных, включающий возможности ее создания, модификации структуры, отбора данных по запросам, модификации информации в базе и прочие операции манипулирования базой данных. Null – значение поля таблицы, показывающее, что информация в данном поле отсутствует. Разрешение на возможность существования значения Null может задаваться для отдельных полей таблицы. СЛАЙД №5 Структура данных (Теория нормальных форм НФ) 2. В реляционной модели достигается гораздо более высокий уровень абстракции данных, чем в иерархической или сетевой. В статье Е.Ф. Кодда утверждается, что «Реляционная модель предоставляет средства описания данных на основе только их естественной структуры, т.е. без потребности введения какой-либо дополнительной структуры для целей машинного представления». Другими словами, представление данных не зависит от способа их физической организации. Это обеспечивается за счет использования математической теории отношений (само название «реляционная» происходит от английского relation – «отношение»). Перейдем к рассмотрению структурной части реляционной модели данных. Прежде всего необходимо дать несколько определений. Определения: Декартово произведение: Для заданных конечных множеств D1, D2, … Dn (не обязательно различных) декартовым произведением D1*D2*…*Dn называется множество произведений вида: d1*d2*…*dn, где d1D1, d2D2, dnDn Пример: если даны два множества A (a1, a2, a3) и B (b1, b2), их декартово произведение будет иметь вид С=A*B (a1*b1, a2*b1, a3*b1, a1*b2, a2*b2, a3*b2) Отношение: Отношением R, определенным на множествах D1, D2, … Dn называется под- множество декартова произведения D1* D2*…* Dn. При этом: o o o o Множества D1, D2, … Dn называются доменами отношения Элементы декартова произведения d1*d2*…*dn называются кортежами Число n определяет степень отношения (n=1 - унарное, n=2 - бинарное, ..., n-арное) Количество кортежей называется мощностью отношения Пример: на множестве С из предыдущего примера могут быть определены отношения R 1 (a1*b1, a3*b2) или R2 (a1*b1, a2*b1, a1*b2) СЛАЙД №6 Отношения удобно представлять в виде таблиц. На рис. 2.1 представлена таблица (отношение степени 5), содержащая некоторые сведения о работниках гипотетического предприятия. Строки таблицы соответствуют кортежам. Каждая строка фактически представляет собой описание одного объекта реального мира (в данном случае работника), характеристики которого содержатся в столбцах. Можно провести аналогию между элементами реляционной модели данных и элементами модели «сущность-связь». Реляционные отношения соответствуют наборам сущностей, а кортежи - сущностям. Поэтому, также как и в модели «сущность-связь» столбцы в таблице, представляющей реляционное отношение, называют атрибутами. Каждый атрибут определен на домене, поэтому домен можно рассматривать как множество допустимых значений данного атрибута. 4 Несколько атрибутов одного отношения и даже атрибуты разных отношений могут быть определены на одном и том же домене. В примере, показанном на рис.2.1 атрибуты «Оклад» и «Премия» определены на домене «Деньги». Поэтому, понятие домена имеет семантическую нагрузку: данные можно считать сравнимыми только тогда, когда они относятся к одному домену. Таким образом, в рассматриваемом нами примере сравнение атрибутов "Табельный номер" и "Оклад" является семантически некорректным, хотя они и содержат данные одного типа. Рис.2.1 Основные компоненты реляционного отношения. Именованное множество пар «имя атрибута - имя домена» называется схемой отношения. Мощность этого множества – называют степенью или «арностью» отношения. Набор именованных схем отношений представляет из себя схему базы данных. Атрибут, значение которого однозначно идентифицирует кортежи, называется ключевым (или просто ключом). В нашем случае ключом является атрибут «Табельный номер», поскольку его значение уникально для каждого работника предприятия. Если кортежи идентифицируются только сцеплением значений нескольких атрибутов, то говорят, что отношение имеет составной ключ. Отношение может содержать несколько ключей. Всегда один из ключей объявляется первичным, его значения не могут обновляться. Все остальные ключи отношения называются возможными ключами. СЛАЙД №7 В отличие от иерархической и сетевой моделей данных в реляционной отсутствует понятие группового отношения. Для отражения ассоциаций между кортежами разных отношений используется дублирование их ключей. Пример сетевой структуры БД пример базы данных, содержащей сведения о подразделениях предприятия и работающих в них сотрудниках, применительно к реляционной модели будет иметь вид: Например, связь между отношениями ОТДЕЛ и СОТРУДНИК создается путем копирования первичного ключа «Номер_отдела» из первого отношения во второе. Таким образом: Для того, чтобы получить список работников данного подразделения, необходимо 1. Из таблицы ОТДЕЛ установить значение атрибута «Номер_отдела», соответствующее данному «Наименованию_отдела» 2. Выбрать из таблицы СОТРУДНИК все записи, значение атрибута «Номер_отдела», которых равно полученному на предыдущем шаге. 5 Для того, чтобы узнать в каком отделе работает сотрудник, надо сделать обратную опера- цию: 1. Определить «Номер_отдела» из таблицы СОТРУДНИК 2. По полученному значению найти запись в таблице ОТДЕЛ. Рис.2.2. База данных о подразделениях и сотрудниках предприятия. Атрибуты, представляющие собой копии ключей других отношений, называются внешними ключами. СЛАЙД №8 Свойства отношений: 1. Отсутствие кортежей-дубликатов. Из этого свойства вытекает наличие у каждого корте- жа первичного ключа. Для каждого отношения, по крайней мере, полный набор его атрибутов является первичным ключом. Однако, при определении первичного ключа должно соблюдаться требование «минимальности», т.е. в него не должны входить те атрибуты, которые можно отбросить без ущерба для основного свойства первичного ключа - однозначно определять кортеж. 2. Отсутствие упорядоченности кортежей. 3. Отсутствие упорядоченности атрибутов. Для ссылки на значение атрибута всегда используется имя атрибута. 4. Атомарность значений атрибутов, т.е. среди значений домена не могут содержаться множества значений (отношения). Более подробно о фундаментальных свойствах отношений можно прочитать в "Введении в СУБД" С.Д.Кузнецова. 3. Теория нормальных форм 3.1. Проблемы проектирования (Введение в реляционные базы (лекция 7)) При проектировании базы данных решаются две основные проблемы. Каким образом отобразить объекты предметной области в абстрактные объекты модели данных, чтобы это отображение не противоречило семантике предметной области и было, по возможности, лучшим (эффективным, удобным и т. д.)? Часто эту проблему называют проблемой логического проектирования баз данных. Как обеспечить эффективность выполнения запросов к БД, т. е. каким образом, имея в виду особенности конкретной СУБД, расположить данные во внешней памяти, создания каких дополнительных структур (например, индексов) потребовать и т. д.? Эту проблему обычно называют проблемой физического проектирования баз данных. 6 В случае реляционных баз данных трудно предложить какие-либо общие рецепты по части физического проектирования. Здесь слишком многое зависит от используемой СУБД. Поэтому мы ограничимся вопросами логического проектирования реляционных баз данных, которые существенны при использовании любой реляционной СУБД. Проблема проектирования реляционной базы данных состоит в обоснованном принятии решений о том, из каких отношений должна состоять БД и какие атрибуты должны быть у этих отношений. Будем рассматривать классический подход, при котором весь процесс проектирования БД осуществляется в терминах реляционной модели данных методом последовательных приближений к удовлетворительному набору схем отношений. Исходной точкой является представление предметной области в виде одного или нескольких отношений, и на каждом шаге проектирования производится некоторый набор схем отношений, обладающих «улучшенными» свойствами. Процесс проектирования представляет собой процесс нормализации схем отношений, причем каждая следующая нормальная форма обладает свойствами, в некотором смысле, лучшими, чем предыдущая. Каждой нормальной форме соответствует определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений. Примером может служить ограничение первой нормальной формы – значения всех атрибутов отношения атомарны. Поскольку требование первой нормальной формы является базовым требованием классической реляционной модели данных, мы будем считать, что исходный набор отношений уже соответствует этому требованию. СЛАЙД №9 В теории реляционных баз данных обычно выделяется следующая последовательность НФ: Первая нормальная форма (1NF); Вторая нормальная форма (2NF); Третья нормальная форма (3NF); Нормальная форма Бойса-Кодда (BCNF); Четвертая нормальная форма (4NF); Пятая нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF). Основные свойства нормальных форм состоят в следующем: Каждая следующая НФ в некотором смысле лучше предыдущей НФ; При переходе к следующей НФ свойства предыдущих НФ сохраняются. В основе процесса проектирования лежит метод нормализации, т. е. декомпозиции отношения, находящегося в предыдущей нормальной форме, на два или более отношений, которые удовлетворяют требованиям следующей нормальной формы. Мы обсудим первые шаги процесса нормализации, в которых учитываются функциональные зависимости между атрибутами отношений. Хотя мы и называем эти шаги первыми, именно они имеют основную практическую важность, поскольку позволяют получить схему реляционной базы данных, в большинстве случаев удовлетворяющую потребности приложений. СЛАЙД №10 3.2. Функциональные зависимости (Теория НФ) От правильного выбора схем отношений, представляющих концептуальную схему, в значительной степени будет зависеть эффективность функционирования базы данных. 7 Реляционная база данных содержит как структурную, так и семантическую информацию. Структура базы данных определяется числом и видом включенных в нее отношений, и связями типа «один ко многим», существующими между кортежами этих отношений. Семантическая часть описывает множество функциональных зависимостей, существующих между атрибутами этих отношений. Дадим определение функциональной зависимости. Определение: Если даны два атрибута X и Y некоторого отношения, то говорят, что Y функционально зависит от X, если в любой момент времени каждому значению X соответствует ровно одно значение Y. Функциональная зависимость обозначается X Y. Отметим, что X и Y могут представлять собой не только единичные атрибуты, но и группы, составленные из нескольких атрибутов одного отношения. Можно сказать, что функциональные зависимости представляют собой связи типа «один ко многим», существующие внутри отношения. Некоторые функциональные зависимости могут быть нежелательны. Определение: Избыточная функциональная зависимость – зависимость, заключающая в себе такую информацию, которая может быть получена на основе других зависимостей, имеющихся в базе данных. Корректной считается такая схема базы данных, в которой отсутствуют избыточные функциональные зависимости. В противном случае приходится прибегать к процедуре декомпозиции (разложения) имеющегося множества отношений. При этом порождаемое множество содержит большее число отношений, которые являются проекциями отношений исходного множества. (Операция проекции описана в разделе, посвященном реляционной алгебре). Определение: Обратимый пошаговый процесс замены данной совокупности отношений другой схемой с устранением избыточных функциональных зависимостей называется нормализацией. Условие обратимости требует, чтобы декомпозиция сохраняла эквивалентность схем при замене одной схемы на другую, т.е. в результирующих отношениях: Не должны появляться ранее отсутствовавшие кортежи; На отношениях новой схемы должно выполняться исходное множество функциональных зависимостей. СЛАЙД №11 3.3. 1NF – первая нормальная форма (Теория НФ) Для обсуждения первой нормальной формы необходимо дать два определения: Простой атрибут – атрибут, значения которого атомарны (неделимы). Сложный атрибут – получается соединением нескольких атомарных атрибутов, которые могут быть определены на одном или разных доменах (его также называют вектор или агрегат данных). Первая нормальная форма. Отношение находится в 1NF, если значения всех его атрибутов атомарны. Т.е. если все атрибуты отношения принимают простые значения (неделимые), не являющиеся множеством или кортежем из более элементарных составляющих. Пример, заимствованный из уже упоминавшейся статьи Е.Ф.Кодда: 8 В БД отдела кадров предприятия необходимо хранить сведения о служащих, которые можно попытаться представить в отношении: СЛУЖАЩИЙ (номер_служащего, имя, дата_рождения, история_работы, дети). Из внимательного рассмотрения этого отношения следует, что атрибуты «история_работы» и «дети» являются сложными, более того, атрибут «история_работы» включает еще один сложный атрибут «история_зарплаты». Данные агрегаты выглядят следующим образом: ИСТОРИЯ_РАБОТЫ (дата_приема, название, история_зарплаты), ИСТОРИЯ_ЗАРПЛАТЫ (дата_назначения, зарплата), ДЕТИ (имя_ребенка, год_рождения). Их связь представлена на рис. 2.3. Рис.2.3. Исходное отношение. СЛАЙД №12 Для приведения исходного отношения СЛУЖАЩИЙ к первой нормальной форме необходимо декомпозировать его на четыре отношения, так как это показано на следующем рисунке: Рис.2.4. Нормализованное множество отношений. Здесь первичный ключ каждого отношения выделен синей рамкой, названия внешних ключей набраны шрифтом синего цвета. Напомним, что именно внешние ключи служат для представления функциональных зависимостей, существующих в исходном отношении. Эти функциональные зависимости обозначены линиями со стрелками. Алгоритм нормализации описан Е.Ф. Коддом следующим образом: 9 Начиная с отношения, находящегося на верху дерева (рис. 2.3.), берется его Первичный Ключ, и каждое непосредственно подчиненное отношение расширяется путем вставки Домена или комбинации доменов этого первичного ключа. Первичный Ключ каждого расширенного таким образом отношения состоит из Первичного Ключа, который был у этого отношения до расширения и добавленного Первичного Ключа родительского отношения. После этого из родительского отношения вычеркиваются все непростые Домены, удаляется верхний узел дерева, и эта же процедура повторяется для каждого из оставшихся поддеревьев. СЛАЙД №13 3.4. 2NF – вторая нормальная форма (Теория НФ) Очень часто первичный ключ отношения включает несколько атрибутов (в таком случае его называют составным) - см., например, отношение ДЕТИ, показанное на рис. 2.4. При этом вводится понятие полной функциональной зависимости. Определение: Неключевой атрибут функционально полно зависит от составного ключа, если он функционально зависит от всего ключа в целом, но не находится в функциональной зависимости от какого-либо из входящих в него атрибутов. Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от её потенциального ключа. Неприводимость означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, от которого можно также вывести данную функциональную зависимость. Для неприводимой функциональной зависимости часто используется эквивалентное понятие «полная функциональная зависимость». Если потенциальный ключ является простым, то есть состоит из единственного атрибута, то любая функциональная зависимость от него является неприводимой (полной). Если потенциальный ключ является составным, то согласно определению второй нормальной формы в отношении не должно быть неключевых атрибутов, зависящих от части составного потенциального ключа. Вторая нормальная форма по определению запрещает наличие неключевых атрибутов, которые вообще не зависят от потенциального ключа. Таким образом, вторая нормальная форма запрещает создавать отношения как несвязанные (хаотические, случайные) наборы атрибутов. Пример: Пусть имеется отношение СОТРУДНИКИ (Сотрудник, Должность, Зарплата, Компьютер). Пусть в этом отношении Первичный Ключ образует пара атрибутов {Сотрудник, Должность}: Сотрудник Гришин Васильев Иванов Должность Кладовщик Программист Кладовщик Зарплата 10000,00 р. 20000,00 р. 12000,00 р. Компьютер Нет Есть Нет Зарплату сотруднику каждый начальник устанавливает сам (хотя её границы зависят от должности). Наличие же компьютера у сотрудника зависит только от должности, то есть зависимость от первичного ключа неполная. Тогда имеем следующие функциональные зависимости: 10 Сотрудник, Должность Зарплата Должность Компьютер Неполная функциональная зависимость атрибута «Компьютер» от ключа приводит к следующей аномалии: при значения атрибута с «ДА» на «НЕТ» необходим полный просмотр отношения для того, чтобы изменить все записи. Данная аномалия является следствием того факта, что в одной структуре данных объединены два семантических факта. Следующее разложение дает отношения во 2НФ: СОТРУДНИКИ (Сотрудник, Должность) ДОЛЖНОСТИ (Должность, Компьютер) В результате приведения к 2NF исходное отношение следует декомпозировать на два отношения: Сотрудник Гришин Васильев Иванов Должность Кладовщик Программист Кладовщик Должность Кладовщик Программист Компьютер Нет Есть Вторая нормальная форма: Отношение находится во 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от ключа. СЛАЙД №14 3.5. 3NF – третья нормальная форма (Теория нормальных форм) Перед обсуждением третьей нормальной формы необходимо ввести понятие транзитивной функциональной зависимости. Определение: Пусть X, Y, Z – три атрибута некоторого отношения. При этом X Y и Y Z, но обратное соответствие отсутствует, т.е. Z -/-> Y и Y -/-> X. Тогда Z транзитивно зависит от X. Функциональная зависимость множества атрибутов Z от множества атрибутов X (записывается X → Z, произносится «икс определяет зет») является транзитивной, если существует такое множество атрибутов Y, что X → Y и Y → Z. При этом ни одно из множеств X, Y и Z не является подмножеством другого, то есть функциональные зависимости X → Z, X → Y и Y → Z не являются тривиальными. Неключевой атрибут отношения R – это атрибут, который не принадлежит ни одному из потенциальных ключей R. Пример отношения, которое находится во 2NF, но не соответствует 3NF: Сотрудник Гришин Васильев Иванов R1 Отдел Бухгалтерия Бухгалтерия Снабжение Телефон 11-22-33 11-22-33 44-55-66 В отношении атрибут «Сотрудник» является первичным ключом. Личных телефонов у сотрудников нет, и телефон сотрудника зависит исключительно от отдела. Таким образом, в отношении существуют следующие функциональные зависимости: Сотрудник → Отдел, Отдел → Телефон, 11 Сотрудник → Телефон. Зависимость Сотрудник → Телефон является транзитивной, следовательно, отношение не находится в 3NF. При этом возникают аномалии: Если в данный момент ни один сотрудник не приписан к отделу, то в базу данных нельзя ввести данные о телефоне отдела (т.к. не определен ключевой атрибут) Если телефон отдела изменяется, необходим просмотр всего отношения и изменение кор- тежей для сотрудников, связанных с данным отделом. В результате разделения (декомпозиции) отношения R1 получаются два отношения, находящиеся в 3NF: R2 Отдел Телефон Бухгалтерия 11-22-33 Снабжение 44-55-66 R3 Сотрудник Гришин Васильев Петров Отдел Бухгалтерия Бухгалтерия Снабжение Исходное отношение R1 при необходимости легко получается в результате операции соединения отношений R2 и R3. Третья нормальная форма: Отношение находится в 3НФ, если оно находится во 2НФ и каждый неключевой атрибут нетранзитивно зависит от Первичного Ключа. Мотивировка. Третья нормальная форма исключает избыточность и аномалии включения и удаления. К сожалению, 3НФ не предотвращает все возможные аномалии. СЛАЙД №15 3.6. BCNF – нормальная форма Бойса-Кодда (Теория НФ) Эта нормальная форма вводит дополнительное ограничение по сравнению с 3НФ. Её ещё называют усиленной 3НФ. Переменная отношения находится в BCNF тогда и только тогда, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ. Менее формально, переменная отношения находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты всех ее функциональных зависимостей являются потенциальными ключами. Для определения BCNF следует понимать понятие функциональной зависимости атрибутов отношения. Пусть R является переменной отношения, а X и Y – произвольными подмножествами множества атрибутов переменной отношения R. Y функционально зависимо от X тогда и только тогда, когда для любого допустимого значения переменной отношения R, если два кортежа переменной отношения R совпадают по значению X, они также совпадают и по значению Y. Подмножество X называют детерминантом, а Y – зависимой частью. Функциональная зависимость тривиальна тогда и только тогда, когда ее правая (зависимая) часть является подмножеством ее левой части (детерминанта). 12 Ситуация, когда отношение будет находиться в 3NF, но не в BCNF, возникает, например, при условии, что отношение имеет два (или более) потенциальных ключа, которые являются составными и имеют общий атрибут. На практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны. Пример. Предположим, создаётся таблица бронирования для теннисных кортов на день. Тариф зависит от выбранного корта и членства в клубе, для каждого из кортов имеется тариф для членов теннисного клуба и для сторонних клиентов. Тарифы для кортов не повторяются. Номер корта К-171 К-05 К-171 К-05 К-НН Время начала 8:00 8:00 8:00 12:00 0:00 Время окончания 24:00 20:00 20:00 18:00 24:00 Тариф Premium General General Family VIP Член клуба Да Нет Нет Да Да Таким образом, возможны следующие составные первичные ключи: Номер корта, Время начала Номер корта, Время окончания Тариф, Время начала Тариф, Время окончания}. Таблица соответствует второй и третьей нормальной форме. Требования второй нормальной формы (2NF) выполняются, так как все атрибуты входят в какой-то из потенциальных ключей, а неключевых атрибутов в отношении нет. Также нет и транзитивных зависимостей, что соответствует требованиям третьей нормальной формы. (3NF). Тем не менее, существует функциональная зависимость Номер корта Тариф. То есть, по ошибке можно нарушить логическую целостность и, например, приписать тариф Premium для первого корта К_05, хотя тариф Premium может относиться только ко К-171. Можно улучшить структуру, разбив таблицу на две. Данное отношение будет соответствовать BCNF. Тариф Premium General Family VIP Время начала Время окончания 8:00 8:00 12:00 0:00 24:00 20:00 18:00 24:00 Premium General Family General VIP та ба К-171 К-171 К-05 К-05 К-НН Да Нет Да Нет Да Тариф Номер кор- Член клуНормальная форма Бойса-Кодда: Отношение находится в BCNF, если оно находится во 3НФ и в ней отсутствуют зависимости атрибутов Первичного Ключа от неключевых атрибутов. Ситуация, когда отношение будет находится в 3NF, но не в BCNF, возникает при условии, что отношение имеет два (или более) возможных ключа, которые являются составными и имеют общий атрибут. Заметим, что на практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны. Мотивировка. В нормальной форме Бойса-Кодда не существует избыточности и аномалий включения, удаления и модификации. Оказывается, что любая схема отношения может быть приведена в нормальную форму Бойса-Кодда таким образом, чтобы декомпозиция обладала свойством соединения без потерь. Однако схема отношения может быть неприводимой в 13 НФБК с сохранением зависимостей. В этом случае приходится довольствоваться третьей нормальной формой. СЛАЙД №16 3.7. 4NF – нормальная форма и многозначные зависимости (Теория НФ) Четвертая нормальная форма касается отношений, в которых имеются повторяющиеся наборы данных. Декомпозиция, основанная на функциональных зависимостях, не приводит к исключению такой избыточности. В этом случае используют декомпозицию, основанную на многозначных зависимостях. Многозначная зависимость является обобщением функциональной зависимости и рассматривает соответствия между множествами значений атрибутов. В качестве примера рассмотрим отношение ПРЕПОДАВАТЕЛЬ (имя, курс, учебное_пособие), хранящее сведения о курсах, читаемых преподавателем, и написанных им учебниках. Пусть профессор Петров читает курсы «Теория упругости» и «Теория колебаний» и имеет соответствующие учебные пособия, а профессор Иванов читает курс «Теория удара» и является автором учебников «Теория удара» и «Теоретическая механика». Тогда наше отношение будет иметь вид: ИМЯ Петров Петров Петров Петров Иванов Иванов КУРС Теория упругости Теория колебаний Теория упругости Теория колебаний Теория удара Теория удара Иванов Иванов Теория упругости Теория упругости УЧЕБНОЕ_ПОСОБИЕ Теория упругости Теория упругости Теория колебаний Теория колебаний Теория удара Теоретическая механика Добавляем: Теория удара Теоретическая механика Это отношение имеет значительную избыточность и его использование приводит к возникновению аномалии обновления. Например, добавление информации о том, что профессор Иванов будет также читать лекции по курсу «Теория упругости» приводит к необходимости добавить два кортежа (по одному для каждого написанного им учебника) вместо одного. Тем не менее, отношение ПРЕПОДАВАТЕЛЬ находится в NFBC (ключевой атрибут - ИМЯ). Заметим, что указанные аномалии исчезают при замене отношения ПРЕПОДАВАТЕЛЬ его проекциями: ИМЯ Петров Петров Иванов Иванов КУРС Теория колебаний Теория упругости Теория удара Теория упругости ИМЯ Петров Петров Иванов Иванов УЧЕБНОЕ_ПОСОБИЕ Теория колебаний Теория упругости Теоретическая механика Теория удара Аномалия обновления возникает в данном случае потому, что в отношении ПРЕПОДАВАТЕЛЬ имеются: 1. Зависимость множества значений атрибута КУРС от множества значений атрибута ИМЯ 2. Зависимость множества значений атрибута УЧЕБНОЕ_ПОСОБИЕ от множества значений атрибута ИМЯ. Определение: Такие зависимости и называются многозначными и обозначаются как ИМЯ ->> КУРС ИМЯ ->> УЧЕБНОЕ_ПОСОБИЕ 14 Нетрудно показать, что многозначные зависимости всегда образуют связанные пары, поэтому их часто обозначают ИМЯ ->> КУРС | УЧЕБНОЕ_ПОСОБИЕ Очевидно, что каждая функциональная зависимость является многозначной, но не каждая многозначная зависимость является функциональной. Четвертая нормальная форма: Отношение находится в 4NF, если оно находится в BCNF и в нём отсутствуют многозначные зависимости, не являющиеся функциональными зависимостями. СЛАЙД №17 3.8. 5NF – пятая нормальная форма и зависимости по соединению (Теория НФ) До сих пор мы предполагали, что единственной операцией, необходимой для устранения избыточности в отношении, была декомпозиция его на две проекции. Однако, существуют отношения, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции без потерь на три (или более) проекций. Этот факт получил название зависимости по соединению, а такие отношения называют 3-декомпозируемые отношения (ясно, что любое отношение можно назвать «n-декомпозируемым», где n >= 2). Детально этот вопрос здесь мы не обсуждаем (полное изложение см. в книге К. Дейта), заметим лишь, что зависимость по соединению является обобщением многозначной зависимости. Отношения, в которых имеются зависимости по соединению, не являющиеся одновременно ни многозначными, ни функциональными, также характеризуются аномалиями обновления. Поэтому, вводится понятие пятой нормальной формы. Пятая нормальная форма: Отношение находится в 5НФ тогда и только тогда, когда любая зависимость по соединению в нём определяется только его возможными ключами. Другими словами, каждая проекция такого отношения содержит не менее одного возможного ключа и не менее одного неключевого атрибута. Для определения пятой нормальной формы следует предварительно ввести понятие зависимости соединения, которое, в свою очередь основано на понятии декомпозиции без потерь. Декомпозиция без потерь. Декомпозицией отношения R называется замена R на совокупность отношений {R1, R2, ..., Rn} такую, что каждое из них есть проекция R, и каждый атрибут R входит хотя бы в одну из проекций декомпозиции. Например, для отношения R с атрибутами {a, b, c} существуют следующие основные варианты декомпозиции: {a}, {b}, {c} {a}, {b, c} {a, b}, {c} {b}, {a, c} {a, b}, {b, c} {a, b}, {a, c} {b, c}, {a, c} {a, b}, {b, c}, {a, c} Рассмотрим теперь отношение R', которое получается в результате операции естественного соединения (NATURAL JOIN), применённой к отношениям, полученным в результате декомпозиции R. Декомпозиция называется декомпозицией без потерь, если R' в точности совпадает с R. 15 Неформально говоря, при декомпозиции без потерь отношение «разделяется» на отношенияпроекции таким образом, что из полученных проекций возможна «сборка» исходного отношения с помощью операции естественного соединения. СЛАЙД №18 Далеко не всякая декомпозиция является декомпозицией без потерь. Проиллюстрируем это на примере отношения R с атрибутами {a, b, c}, приведённом выше. Пусть отношение R имеет вид: R a b c Москва Россия Столица Томск Не столица Россия Берлин Германия Столица Декомпозиция R1 = {a}, R2 = {b, c} имеет вид: R1 R2 a b c Москва Россия Столица Томск Россия Не столица Берлин Германия Столица Результат операции соединения этих отношений: R' = R1 NATURAL JOIN R2 a b c Москва Россия Столица Москва Россия Не столица Москва Германия Столица Томск Россия Столица Томск Россия Не столица Томск Германия Столица Берлин Россия Столица Берлин Россия Не столица Берлин Германия Столица Очевидно, что R' не совпадает с R, а значит такая декомпозиция не является декомпозицией без потерь. СЛАЙД №19 Рассмотрим теперь декомпозицию R1 = {a, b}, R2 = {a, c}: R1 a R2 b a c Москва Россия Москва Столица Томск Томск Россия Берлин Германия Не столица Берлин Столица Такая декомпозицией является декомпозицией без потерь, в чём читатель может убедиться самостоятельно. В некоторых случаях отношение вовсе невозможно декомпозировать без потерь. Существуют также примеры отношений, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции без потерь на три или большее количество проекций. Зависимость соединения. Пусть R – переменная отношения, а A, B, ..., Z – некоторые подмножества множества ее атрибутов. Если декомпозиция любого допустимого значения R на отношения, состоящие из множеств атрибутов A, B, ..., Z, является декомпозицией без потерь, говорят, что переменная отношения R удовлетворяет зависимости соединения *{А, В, ..., Z}. Иными словами, переменная отношения R удовлетворяет зависимости соединения *{А, В, ..., Z} тогда и только тогда, когда любое допустимое значение переменной отношения R эквивалентно соединению ее проекций по подмножествам A, B, ..., Z множества атрибутов. Подобно тому, как: Функциональная зависимость есть частный случай многозначной зависимости, Многозначная зависимость является частным случаем зависимости соединения. Зависимость соединения является предельным обобщением понятий многозначной и функциональной зависимости То есть это наиболее общая форма зависимости между атрибутами отношения. Важно понимать, что зависимость соединения определяется не для конкретного значения переменной отношения в тот или иной момент времени, а по всем возможным значениям. Поэтому понятие зависимости соединения определено не для отношения (конкретного значения), а для переменной отношения. Зависимость соединения определяется не механически по текущим значениям, а следует из внешнего знания о природе и закономерностях данных, которые могут находиться в переменной отношения. То же самое относится к многозначной и функциональной зависимостям. Зависимость соединения *{A, B, ..., Z} является тривиальной тогда и только тогда, когда по крайней мере одно из подмножеств A, B, ..., Z является множеством всех атрибутов отношения (включает все атрибуты). В противном случае зависимость соединения является нетривиальной. Формулировка определения. Отношение находится в пятой нормальной форме (иначе — в проекционно-соединительной нормальной форме) тогда и только тогда, когда каждая нетривиальная зависимость соединения в нём определяется потенциальным ключом (ключами) этого отношения. Зависимость соединения *{A, B, ..., Z} определяется потенциальным ключом (ключами) тогда и только тогда, когда каждое из подмножеств A, B, ..., Z множества атрибутов является суперключом отношения. Условие «каждое из подмножеств A, B,..., Z множества атрибутов является суперключом отношения» можно эквивалентно сформулировать так: «каждое из подмножеств A, B, ..., Z множества атрибутов включает некоторый потенциальный ключ отношения». 17 Свойства 5НФ. Любое отношение в 5НФ автоматически находится также в 4НФ и, следовательно, во всех других нормальных формах. 5НФ является окончательной нормальной формой (по крайней мере в контексте операций проекции и соединения). Рональд Фейгин в 1979 г. показал, что любая переменная отношения может быть подвергнута декомпозиции без потерь на эквивалентный набор переменных отношения в 5НФ, т.е. 5НФ всегда достижима. Однако К. Дейт отмечает, что процедура определения того, что некоторая переменная отношения находится в 4НФ, а не в 5НФ, и, таким образом, существует возможность её дальнейшей выгодной декомпозиции, всё ещё остаётся не вполне ясной. Это связано с тем, что задача определения всех зависимостей соединения для отношения может оказаться очень сложной, а по поводу отношения можно утверждать, что оно находится в 5НФ, только при условии известности всех его потенциальных ключей и всех его зависимостей соединения. Очень редко отношение, находящееся в 4НФ, не соответствует 5НФ. Это те ситуации, в которых реальные правила, ограничивающие допустимые комбинации атрибутов, никак не выражены в структуре отношения (см. пример ниже). В таком случае, если отношение не приведено к 5НФ, бремя обеспечения логической целостности данных отчасти перекладывается на приложение, отвечающее за добавление, удаление и изменения данных. В этом случае существует риск возникновения ошибок. Пятая нормальная форма исключает возникновение таких аномалий. СЛАЙД №20 Пример. Предположим, что нужно хранить данные об ассортименте нескольких продавцов, торгующих продукцией нескольких фирм (номенклатура товаров фирм может пересекаться): Ассортимент (продавцы, фирмы, товары) Продавец Фирма Товар Иванов Рога и Копыта Пылесос Иванов Рога и Копыта Хлебница Петров Безенчук&Ко Сучкорез Петров Безенчук&Ко Пылесос Петров Безенчук&Ко Хлебница Петров Безенчук&Ко Зонт Сидоров Безенчук&Ко Пылесос Сидоров Безенчук&Ко Телескоп Сидоров Рога и Копыта Пылесос Сидоров Рога и Копыта Лампа Сидоров Геркулес Вешалка Если дополнительных условий нет, то данное отношение, которое находится в 4-ой нормальной форме, является корректным и отражает все необходимые ограничения. Теперь предположим, что нужно учесть следующее ограничение: каждый продавец имеет в своём ассортименте ограниченный список фирм и ограниченный список типов товаров и предлагает товары из списка товаров, производимые фирмами из списка фирм. То есть продавец не имеет право торговать какими угодно товарами каких угодно фирм. Если продавец П имеет право торговать товарами фирмы Ф, и если продавец П имеет право торговать товарами типа Т, то в этом случае в ассортимент продавца П входят товары типа Т фирмы Ф при условии, что фирма Ф производит товары типа Т. 18 Такое ограничение может быть вызвано, например, тем, что список типов товаров продавца ограничен имеющимися у него лицензиями, либо знаниями и квалификацией, необходимыми для их продажи, а список фирм каждого продавца определён партнёрскими соглашениями. В рассматриваемом примере, в частности, предполагается, что продавец Иванов имеет право торговать товарами только фирмы «Рога и Копыта», продавец Петров — товарами только фирмы «Безенчук&Ко», зато продавец Сидоров не имеет право торговать хлебницами и сучкорезами и т.д. Предложенное выше отношение не может исключить ситуации, при которых данное ограничение будет нарушено. Ничто не препятствует занести данные о торговле товаром, который данная фирма вообще не выпускает, либо данные о торговле товарами той фирмы, которую данный продавец не обслуживает, либо данные о торговле таким типом товара, который данный продавец не имеет право продавать. Отношение не находится в 5NF, поскольку в нём есть нетривиальная зависимость соединения *{{Продавец, Фирма}, {Фирма, Товар}, {Продавец, Товар}}, однако подмножества {Продавец, Фирма}, {Фирма, Товар}, {Продавец, Товар} не являются суперключами исходного отношения. В данном случае для приведения к 5NF отношение должно быть разбито на три: {Продавец, Фирма}, {Фирма, Товар}, {Продавец, Товар}. Товары продавцов Продавец Иванов Товар Сидоров Лампа Сидоров Вешалка Фирмы продавцов Пылесос Товар Рога и Копыта Пылесос Рога и Копыта Хлебница Хлебница Продавец Петров Сучкорез Иванов Рога и Копыта Безенчук&Ко Сучкорез Петров Пылесос Петров Безенчук&Ко Безенчук&Ко Пылесос Петров Хлебница Сидоров Безенчук&Ко Безенчук&Ко Хлебница Петров Зонт Сидоров Рога и Копыта Безенчук&Ко Зонт Сидоров Телескоп Сидоров Геркулес Безенчук&Ко Телескоп Сидоров Пылесос Геркулес Вешалка Иванов Фирма Фирма Товары фирм Рога и Копыта Лампа СЛАЙД №21 4. Заключение Нормализация схемы базы данных: Cпособствует более эффективному выполнению СУБД операций обновления базы данных, поскольку сокращается число проверок и вспомогательных действий, поддерживающих целостность базы данных. При проектировании реляционной базы данных почти всегда добиваются второй нормальной формы 2NF всех входящих в базу данных отношений. В часто обновляемых базах данных обычно стараются обеспечить третью нормальную форму 3NF отношений. На нормальную форму Бойса-Кодда BCNF внимание обращают гораздо реже, поскольку на практике ситуации, в которых у отношения имеется несколько составных перекрывающихся возможных ключей, встречаются нечасто. Краткие формулировки: 1. 1NF – значения всех его атрибутов атомарны 19 2. 3. 4. 5. 6. 2NF – каждый неключевой атрибут функционально полно зависит от ключа 3NF – каждый неключевой атрибут нетранзитивно зависит от Первичного Ключа BCNF – отсутствуют зависимости атрибутов Первичного Ключа от неключевых атрибутов 4NF – отсутствуют многозначные зависимости 5NF – любая зависимость по соединению определяется только его возможными ключами. Каждая проекция такого отношения содержит не менее одного возможного ключа и не менее одного неключевого атрибута.