ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ РАДИОТЕХНИКИ ЭЛЕКТРОНИКИ И АВТОМАТИКИ Лабораторная работа №1 Реляционная модель данных Выполнил: Группа: Москва, 2012 г. Кулаков Д. А. ВСС-1-09 Факультет: ИТ Проверил: Храмцова Е. П. Содержание ЦЕЛЬ РАБОТЫ 3 ПОСТАНОВКА ЗАДАЧИ 4 ХОД РАБОТЫ 5 ОТВЕТЫ НА ВОПРОСЫ 7 ВЫВОД 24 СПИСОК ЛИТЕРАТУРЫ 25 2 Цель работы Факультет: Кафедра: Студент: Группа: Шифр: ИТ ВТ Кулаков Д. А. ВСС-1-09 091053 Изучить: — Основные понятия баз данных; — Метод проектирования модели предметной области «сущностьсвязь»; — Основные понятия реляционной модели данных (РМД); — Процесс нормализации РМД. 3 Постановка задачи Заданы две сущности предметной области: «Монарх» и «Монархия». Требуется: 1. Записать модель сущностей с видом связи 1:1 между ними и необязательным классом принадлежности объектов каждой сущности к связи, привести примеры множеств объектов каждой сущности и пример множества объектов связи сущностей; 2. То же, что и в пункте 1 для вида связи 1:* (*:1); 3. То же, что и в пункте 1 для вида связи *:*; 4. Составить ER-диаграммы (диаграммы «сущность-связь») трёх моделей из пунктов 1, 2, 3; 5. Преобразовать ER-диаграммы в схемы РМД предметной области; 6. Оформить отчёт. Отчёт должен содержать результаты выполнения пунктов 1 – 5 и ответы на 19 вопросов. 4 Ход работы Далее повторяется порядок пунктов, описанный в разделе «Постановка задачи». Все графические изображения, для удобства, представим в виде графов. Модель сущностей с видом связей 1:1 Монарх Н 1:1 управляет Н Монархия Монарх Н 1:1 управляет Н Монархия Пример множества объектов сущности «Монарх»: {Альберт II, Бенедикт XVI, Елизавета II}. Пример множества объектов сущности «Монархия»: {Бельгия, Ватикан, Великобритания}. Пример множества объектов связи сущностей «Монарх» и «Монархия»: {(Альберт II, Бельгия), (Бенедикт XVI, Ватикан), (Елизавета II, Великобритания)}. Модель сущностей с видом связи 1:* Монарх Н 1:* управляет Н Монархия Монарх Н 1:1 управляет Н Монархия Пример множества объектов сущности «Монарх»: {Альберт II, Бенедикт XVI, Елизавета II}. Пример множества объектов сущности «Монархия»: {Бельгия, Ватикан, Великобритания, Канада, Барбадос}. 5 Пример множества объектов связи сущностей «Монарх» и «Монархия»: {(Альберт II, Бельгия), (Бенедикт XVI, Ватикан), (Елизавета II, Великобритания), (Елизавета II, Канада), (Елизавета II, Барбадос)}. ER-диаграммы трёх моделей с видами связей между сущностями 1:1, 1:* и *:* и классами принадлежностей Н -Н Имя Наследник Рождение Титул Монарх Коронация Номер Н Континент Название Н Монархия 1) 1:1 2) 1:* 3) *:* управляет Предшественник Язык Рождаемость Номер Число жителей Смертность Схема РМД с видом связей между сущностями *:* и классами принадлежностей Н-Н Монарх (Номер, Имя, Титул, Рождение, Коронация, Предшественник, Наследник). Монархия (Номер, Название, Континент, Число жителей, Официальный язык, Уровень рождаемости, Уровень смертности). Управляет (НомерМонарха, НомерМонархии), где — НомерМонарха – внешний ключ, ссылающийся на отношение «Монарх»; — НомерМонархии – внешний ключ, ссылающийся на отношение «Монархия». Все отношения находятся в БКНФ. 6 Ответы на вопросы Предметная область, модель предметной области. Предметная область – отображение между значениями домена, с одной стороны, и объектами «реального мира», с другой. Каждое отдельное значение домена соответствует одному и только одному объекту в предметной области1. Модель предметной области – есть интерпретация, при которой все отношения имеют значение «TRUE». Более корректно вводить данные понятия в контексте исчисления предикатов. Совокупность объектов внешнего мира – объектов, о которых можно задавать вопросы, – образует объектное ядро предметной области. Синонимами термина «объект» являются «реалия, сущность, вещь». Однако термин сущность понимается нами несколько уже, как компонент модели предметной области, т.е. как уже выделенный на концептуальном уровне объект для базы данных. Сущность предметной области является результатом абстрагирования реального объекта путем выделения и фиксации набора его свойств. На Рисунок 1 представлен один из подходов к классификации объектов предметной области. Рисунок 1 Модель предметной области — это визуальное представление концептуальных классов или объектов реального мира в терминах 1 Введение в системы баз данных: Пер. с англ. / Дейт К. Дж. — М.: Вильямс, 2006. — C. 983. 7 предметной области. Моделирование предметной области – один из начальных этапов проектирования системы, необходимый для выявления, классификации и формализации сведений обо всех аспектах предметной области, определяющих свойства разрабатываемой системы. Свойства, ключ и множество объектов сущности. Каждая запись данных является сущностью. Каждая сущность имеет ключ, который является ее уникальным идентификатором среди всех прочих сущностей в хранилище данных. Каждая сущность имеет одно или несколько именованных свойств, представленных в качестве атрибутов. Ключи и свойства лежат в основе множества полезных функций базы данных. Виды связей двух сущностей. Различают следующие типы связей: 1. Связь «один к одному» - все поля связи основной и дополнительной таблиц ключевые. Сами таблицы являются равноправными; 2. Идентифицирующая связь «один ко многим» – независимая сущность и зависимая от неё. При этом первичный ключ родительской записи включается в качестве первичного ключа дочерней; 3. Не идентифицирующая связь «один ко многим» – две взаимно независимые сущности, между экземплярами которых может быть установлено соответствие. При этом первичный ключ родительской записи включается в качестве неключевых атрибутов дочерней; 4. Связь «многие к одному» аналогична пп. 2, 3; 5. Общая связь «многие ко многим». Для каждого экземпляра одной сущности может существовать несколько связанных экземпляров другой. Классы принадлежности объектов сущности к связям. Связь между сущностями характеризуется не только типом связи (1:1, 1:N, N:М), но и классом принадлежности. Класс может быть обязательным и необязательным. Если каждый экземпляр сущности участвует в связи, то класс принадлежности – обязательный, иначе – необязательный. 8 Метод «сущность-связь», этапы метода и его диаграмма. Метод «сущность-связь» (англ. «Entity-Relationship model»), или ERметод, предложенный П. Ченом в 1976 г., является наиболее известным представителем класса семантических моделей предметной области. ERмодель обычно представляется в графической форме, с использованием оригинальной нотации П. Чена, называемой ER-диаграмма, либо с использованием других графических нотаций (Crow's Foot, Information Engineering и др.). Основные преимущества ER-моделей: — наглядность; — модели позволяют проектировать базы данных с большим количеством объектов и атрибутов; ER-модели реализованы во многих системах автоматизированного проектирования баз данных (например, ERWin). Основные элементы ER-моделей: — объекты (сущности); — атрибуты объектов; — связи между объектами. Приведём пример диаграмм UML-нотации на рисунках 2-4, для сравнения с диаграммами, используемыми нами при обучении в МИРЭА: Рисунок 2. Пример агрегатной ассоциации. Рисунок 3. Пример композитной агрегатной ассоциации. 9 Рисунок 4. Ассоциация с указанным направлением навигации. Математическое определение отношения. Отношение – математическая структура, которая формально определяет свойства различных объектов и их взаимосвязи. Отношения обычно классифицируются по количеству связываемых объектов и собственным свойствам. В математике примерами отношений являются равенство (=), коллинеарность, делимость и т. д. N-местным отношением, заданным на множествах M1, M2, … Mn, называется подмножество прямого произведения этих множеств. Реляционная модель данных (РМД). Автор данной модели Эдгар Кодд (1970 – 71 г.г., 79 г. - дополнение). БД представляется совокупностью плоских двумерных таблиц. Сеть может быть сведена к дереву, а дерево – к таблице. Таблицы обладают следующими свойствами: 1) Каждый элемент таблицы – один элемент данных; 2) Все столбцы таблицы однородны, т. е. все элементы столбца имеют одинаковую природу; 3) Столбцы однозначно именуются; 4) В таблице нет двух одинаковых строк; 5) Строки и столбцы могут просматриваться в любом порядке. В основе модели лежат отношения между таблицами. Отношение, кортеж, атрибут, значение атрибута, домен. Отношение Кортеж Таблица; Строка таблицы; 10 Атрибут Значение атрибута Домен Заголовок столбца таблицы; Значение поля в записи; Множество допустимых значений атрибута. Отношения характеризуются устойчивой семантикой. В отношениях существуют атрибуты, от которых зависят другие атрибуты. Функциональной зависимостью набора атрибутов В отношения R от набора атрибутов А того же отношения называется такое соотношение элементов проекций R[A] и R[B], при котором в каждый момент времени любому элементу проекции R[A] соответствует строго один элемент проекции R[B], входящий вместе с ним в некоторый кортеж отношения R. Пусть дана совокупность не обязательно различных множеств D1, D2, ..., Dn. Отношение R, определенное на этих n множествах, есть множество упорядоченных кортежей (строк) d1d2...dn таких, что d1 D1, d2 D2, ..., dn Dn. Множество Di – домены отношения R, n – степень отношения R. Различают понятие домена и атрибута. Атрибут – это подмножество значений домена, имеющее смысл для данной предметной области. Домены могут быть простыми и составными. Мощность и степень отношения, схема и содержимое отношения. Количество кортежей (строк) – мощность или кардинальное число отношения R. Степень отношения – количество множеств, входящих в данное отношение. Отношения записывается в виде схемы отношения R(A1 … Аn), где Аi – имена атрибутов. Здесь степень отношения равна n. Схема модели предметной области. Схема модели предметной области описывает сущности предметной области и их связи. Являет собой список имён атрибутов. Примером подобной модели может служить рис. 5. 11 Рисунок 5. Простейшая схема БД. Ключ отношения: простой, составной, потенциальный, первичный и вторичный (внешний). Связи между данными, хранимыми в разных отношениях, в реляционной БД устанавливаются с помощью использования внешних ключей – для установления связи между кортежем из отношения A с определённым кортежем отношения B, в предусмотренные для этого атрибуты кортежа отношения A записывается значение первичного ключа (а в общем случае значение потенциального ключа) целевого кортежа отношения B. Таким образом, всегда имеется возможность выполнить две операции: — определить, с каким кортежем в отношении B связан определённый кортеж отношения A; — найти все кортежи отношения A, имеющие связи с определённым кортежем отношения B. Потенциальный ключ должен обладать двумя перечисленными ниже свойствами: — Уникальность. Потенциальный ключ не содержит двух одинаковых значений для различных кортежей; — Несократимость. Никакое подмножество атрибутов ключа не должно обладать свойством уникальности. Первичный ключ, а также ключ отношения или ключевой атрибут – это атрибут отношения, однозначно идентифицирующий каждый из его кортежей2. Первичный ключ обладает следующими свойствами: 2 Базы данных: Учебник для вузов / А. Д. Хомоненко, В. М. Цыганков, М. Г. Мальцев; Под ред. А. Д. Хомоненко. — СПб.: КОРОНА принт, 2006. — С. 47. 12 — Не может иметь значение NULL; — Должен быть потенциальным; — Должен быть коротким. Если первичный ключ состоит из единственного атрибута, его называют простым ключом. Если первичный ключ состоит из двух и более атрибутов, его называют составным ключом. Так, номер паспорта и серия паспорта не могут быть первичными ключами по отдельности, так как могут оказаться одинаковыми у двух и более людей. Но не бывает двух личных документов одного типа с одинаковыми серией и номером. Поэтому в отношении, содержащем данные о людях, первичным ключом может быть подмножество атрибутов, состоящее из типа личного документа, его серии и номера. Внешний ключ – это простой или составной ключ, который применяется для принудительного установления связи между данными в двух таблицах. Внешний ключ можно создать, определив ограничение FOREIGN KEY при создании или изменении таблицы. Если один или несколько столбцов, в которых находится первичный ключ для одной таблицы, упоминается в одном или нескольких столбцах другой таблицы, то в ссылке внешнего ключа создается связь между двумя таблицами. Этот столбец становится внешним ключом во второй таблице. Целостность данных. Целостность базы данных (database integrity) – соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам. Каждое правило, налагающее некоторое ограничение на возможное состояние базы данных, называется ограничением целостности (integrity constraint). Примеры правил: вес детали должен быть положительным; количество знаков в телефонном номере не должно превышать 25; возраст родителей не может быть меньше возраста их биологического ребёнка и т.д. Задача аналитика и проектировщика базы данных – возможно более полно выявить все имеющиеся ограничения целостности и задать их в базе данных. 13 Целостность БД не гарантирует достоверности содержащейся в ней информации, но обеспечивает, по крайней мере, правдоподобность этой информации, отвергая заведомо невероятные, невозможные значения. Таким образом, не следует путать целостность БД с достоверностью БД. Достоверность (или истинность) есть соответствие фактов, хранящихся в базе данных, реальному миру. Очевидно, что для определения достоверности БД требуется обладание полными знаниями, как о содержимом БД, так и о реальном мире. Для определения целостности БД требуется лишь обладание знаниями о содержимом БД и о заданных для неё правилах. Поэтому СУБД может (и должна) контролировать целостность БД, но принципиально не в состоянии контролировать достоверность БД. Контроль достоверности БД может быть возложен только на человека, да и то в ограниченных масштабах, поскольку в ряде случаев люди тоже не обладают полнотой знаний о реальном мире. Итак, БД может быть целостной, но не достоверной. Возможно и обратное: БД может быть достоверной, но не целостной. Последнее имеет место, если правила (ограничения целостности) заданы неверно. В терминах ER-модели, условия согласованности могут включать в себя указание того, какие значения могут принимать атрибуты узлов, какие связи могут устанавливаться между узлами, каково минимальное и максимальное число связей определённого типа, в котором может участвовать один узел. Ссылочная целостность (англ. referential integrity) – необходимое качество реляционной базы данных, заключающееся в отсутствии в любом её отношении внешних ключей, ссылающихся на несуществующие кортежи. Благодаря наличию связей в реляционной БД можно хранить факты без избыточного дублирования, то есть в нормализованном виде. Ссылочная целостность может быть проиллюстрирована следующим образом: База данных обладает свойством ссылочной целостности, когда для любой пары связанных внешним ключом отношений в ней условие ссылочной целостности выполняется. Если вышеприведённое условие не выполняется, говорят, что в базе данных нарушена ссылочная целостность. Такая БД не может нормально эксплуатироваться, так как в ней разорваны логические связи между 14 зависимыми друг от друга фактами. Непосредственным результатом нарушения ссылочной целостности становится то, что корректным запросом не всегда удаётся получить корректный результат. Нарушение целостности данных: избыточность данных и аномалии модификации данных. Правильно спроектированная и поддерживаемая база данных не допускает возможности нарушения ссылочной целостности. Тем не менее, такие нарушения могут появиться в ходе эксплуатации базы по целому ряду причин. Некоторые из них: Некорректная работа прикладного программного обеспечения. Понятно, что при ошибке в программе, выполняющей модификацию базы данных, база может быть модифицирована недопустимым образом, в результате чего образуются «висящие» ссылки. Программа может совершать ошибки следующих видов: Неполная запись объектов. Данные объекта размещаются в записях нескольких таблиц, а программа не записывает какую-то из них. Некорректная правка ссылки. Значение внешнего ключа изменяется на такое, которому не соответствует ни одна запись в связанной таблице. Правка первичного ключа без каскадного обновления. В таблице, на которую есть ссылки, правится первичный ключ, но при этом внешние ключи в связанных с ней таблицах остаются без изменения. Удаление записи без каскадного обновления. Из таблицы удаляется запись, на которую имеются ссылки по внешним ключам других таблиц, при этом в связанных записях внешние ключи не меняются. В результате все ссылающиеся на неё записи других таблиц становятся некорректными. Сбои в работе системного программного обеспечения и оборудования. Даже когда прикладное программное обеспечение работает совершенно правильно, возможно нарушение ссылочной целостности. Например, если при добавлении объекта в базу нужно добавить несколько связанных записей в несколько таблиц, очевидно, что ссылочная целостность будет нарушена в процессе добавления данных (когда часть 15 связанных записей уже добавлена, а часть — ещё нет), и восстановится только после завершения операции. Если во время выполнения операции она будет прервана (из-за переполнения диска, сбоя питания, или по каким-то другим причинам), часть записей будет добавлена в БД, часть — нет. Часть добавленных записей останется с некорректными ссылками. Пустые внешние ключи. Возможна ситуация, когда внешний ключ вместо ссылки на существующую запись в таблице БД содержит «отсутствующее значение» NULL. Такое положение можно трактовать как отсутствие какой-то части объекта. Хотя с точки зрения чистой теории это недопустимо, на практике иногда бывает удобно разрешить использование пустых внешних ключей. Чтобы корректно работать с группами связанных таблиц, допускающих пустые внешние ключи, используется специфическая операция языка SQL — открытое соединение (другое название — «внешнее соединение», англ. outer join). Ссылочная целостность на внешних ключах. СУБД может иметь механизм автоматического поддержания ссылочной целостности, основанный на явном описании ссылок при создании БД. При описании таблиц БД программист явно описывает, какие поля таблиц являются внешними ключами и на какие таблицы они ссылаются. Эта информация сохраняется в служебных областях памяти БД. Любая операция, изменяющая данные в таблице, вызывает автоматическую проверку ссылочной целостности. При этом: При операции добавления или редактирования записи автоматически проверяется, ссылаются ли внешние ключи в этой записи на существующие записи в заявленных при описании связанных таблицах. Если выясняется, что операция приведёт к появлению некорректных ссылок, она не выполняется — система возвращает ошибку. При операции редактирования записи проверяется: если изменяется её первичный ключ и на данную запись имеются ссылки, то операция редактирования завершается с ошибкой; если изменяется какой-то из внешних ключей, хранящихся в этой записи, и после изменения внешний ключ будет ссылаться на несуществующую запись, то операция редактирования завершается с ошибкой. 16 При операции удаления записи проверяется, нет ли на неё ссылок. Если ссылки имеются, то возможно три варианта дальнейших действий (фактически выполняемый зависит от СУБД и от выбора программиста, который он должен сделать при описании связи): Запрет — удаление блокируется и возвращается ошибка. Каскадное удаление — в одной транзакции производится удаление данной записи и всех записей, ссылающихся на данную. Если на удаляемые записи также есть ссылки и настройки также требуют удаления, то каскадное удаление продолжается дальше. Таким образом, после удаления данной записи в базе не остаётся ни одной записи, прямо или косвенно ссылающейся на неё. Если хотя бы одну из ссылающихся записей удалить не получается (либо для неё настроен запрет, либо происходит какая-либо ещё ошибка), то все удаления запрещаются. Обнуление внешних ключей — во все внешние ключи записей, ссылающихся на данную запись, записывается псевдозначение NULL. Если хотя бы для одной из ссылающихся записей это невозможно (например, если поле внешнего ключа описано так, что его нельзя обнулять), то удаление запрещается. Нормализация отношений. Это получение простой корректной формы отношений из исходных отношений при условии сохранения целостности и непротиворечивости. В ходе нормализации удаляются избыточность, сложность, аномалии удаления исключаются. Нормализация – поэтапный процесс со строгой последовательностью. Функциональные зависимости атрибутов отношений: полная, частичная, многозначная, транзитивная. Атрибут находится в полной функциональной зависимости, если он зависит от всего ключа и не зависит от его составных. Частичной функциональной зависимостью будем называть зависимость неключевого атрибута от части составного ключа. 17 Многозначная зависимость — это разновидность функциональной зависимости. Атрибут В находится в многозначительной зависимости от атрибута А, тогда коду одного значения атрибута А отвечает много значений атрибута В. Транзитивная зависимость — это зависимость между неключевыми атрибутами. Транзитивные зависимости изымаются также с помощью декомпозиции отношения на другие два или больше отношений, которые не содержат транзитивных отношений, и объединение которых даст начальное отношение. Первая и вторая нормальные формы (1НФ, 2НФ). Первая нормальная форма Исходное отношение может иметь сложные или составные домены. Применение 1НФ позволяет выровнять длину записи. При этом получается отношение из простых атрибутов. Алгоритм приведения к 1НФ: 1) Атрибуты ключа корневого отношения вносятся в множество ключевых атрибутов отношения, непосредственно подчиненного корневому с сохранением порядка кортежей. 2) Из корневого отношения удаляются составные атрибуты. 3) Корневое отношение включается в результирующее множество отношений. 4) Из дерева удаляется корень. Если среди полученных отношений имеются отношения, состоящие только из простых атрибутов, то они включаются в результирующее множество. 5) Для каждого из оставшихся отношений повторять с п.1 до тех пор, пока множество не останется пустым. 1НФ называется либо данное отношение, если все его атрибуты простые, либо набор отношений, построенный на простых атрибутах, полученный из данного отношения путем использования алгоритма 18 нормализации. Классические реляционные СУБД не работают с отношениями не в 1НФ. Вторая нормальная форма В некоторых отношениях имеется неполная функциональная зависимость (явление, когда некоторые неключевые атрибуты зависят от части ключа). Очевидно, это при составном ключе. Пусть αR – множество различных атрибутов R, А Зависимость R.A αR, В αR. R.B называется полной, если R.C не R.B, C A, C не В. К чему это может привести: - избыточность; - аномалии включения и удаления. Выходом является разбиение исходного отношения на большее количество. 2НФ называется либо данное отношение, если оно в 1НФ и содержит только полные функциональные зависимости неключевых атрибутов от ключей, либо набор проекций данного отношения, обладающий указанными свойствами. Причем данное отношение должно быть восстановлено естественным соединением проекций. 2НФ с минимальным количеством проекций – оптимальная. Когда имеется несколько неполных зависимостей, то используют 2НФ – необязательна. Третья нормальная форма (3НФ). При анализе функциональной зависимости можно вывести транзитивный вид зависимости: ФИО Иванов Петров Сидоров Организация Полимер ЮУрГУ ЮУрГУ Тип НИИ ВУЗ ВУЗ Пусть А αR, С αR, где αR – множество различных атрибутов R. Тогда функциональная зависимость R.A R.С называется транзитивной, если существует В αR такое, что: 19 1. В А. 2. С В. 3. R.A 4. R.В не 5. R.В В - организация R.В. А – ФИО R.А. С – тип организации R.С. Схема транзитивной зависимости. Транзитивная зависимость может быть строгой и не строгой. При отсутствии обратной зависимости А и С – строгая. Таким образом, 3НФ называется либо данное отношение, если оно во 2НФ и не содержит транзитивных зависимостей неключевых атрибутов и ключей, либо набор проекций данного отношения, обладающий указанными выше свойствами, причем данное отношение должно быть восстановлено естественным соединением отношений. 3НФ с минимальным количеством проекций называется оптимальной. Бойс-Кодд установили, что транзитивная зависимость является одним из видов функциональной. Отношением в 3НФ называется либо данное отношение, если оно приведено ко 2НФ и для любого набора атрибутов А отношение R верно следующее утверждение: если некоторый атрибут отношения R, не входящий в множество атрибутов А, функционально зависти от А, то и все атрибуты отношения R, не входящие в множество атрибутов А, функционально зависят от А. Если указанное выше не выполняется, то 3НФ называется набор проекций отношения R, обладающий указанными выше свойствами, причем данное отношение должно быть восстановлено естсественным соединением проекций. Усиленная 3НФ (нормальная форма Бойса-Кодда БКНФ). Нормальная форма Бойса-Кодда (англ. Boyce-Codd normal form; сокращённо BCNF) — одна из возможных нормальных форм отношения в реляционной модели данных. 20 Иногда нормальную форму Бойса-Кодда называют усиленной третьей нормальной формой, поскольку она во всех отношениях сильнее (строже) по сравнению с ранее определённой ЗНФ3. Названа в честь Рэя Бойса и Эдгара Кодда, хотя Кристофер Дейт указывает, что на самом деле строгое определение «третьей» нормальной формы, эквивалентное определению нормальной формы Бойса-Кодда, впервые было дано Иэном Хитом (англ. Ian Heath) в 1971 году, поэтому данную форму следовало бы называть «нормальной формой Хита»4. Переменная отношения находится в BCNF тогда и только тогда, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ5. Менее формально, переменная отношения находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты всех ее функциональных зависимостей являются потенциальными ключами. Для определения BCNF следует понимать понятие функциональной зависимости атрибутов отношения. Пусть R является переменной отношения, а X и Y — произвольными подмножествами множества атрибутов переменной отношения R. Y функционально зависимо от X тогда и только тогда, когда для любого допустимого значения переменной отношения R, если два кортежа переменной отношения R совпадают по значению X, они также совпадают и по значению Y. Подмножество X называют детерминантом, а Y — зависимой частью. Функциональная зависимость тривиальна тогда и только тогда, когда ее правая (зависимая) часть является подмножеством ее левой части (детерминанта). Ситуация, когда отношение будет находиться в 3NF, но не в BCNF, возникает, например, при условии, что отношение имеет два (или более) потенциальных ключа, которые являются составными и имеют общий 3 Введение в системы баз данных… – С. 460. Там же. – С. 479 5 Там же. – С. 483 4 21 атрибут. На практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны. Переменная отношения находится в BCNF тогда и только тогда, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ. Менее формально, переменная отношения находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты всех ее функциональных зависимостей являются потенциальными ключами. Для определения BCNF следует понимать понятие функциональной зависимости атрибутов отношения. Пусть R является переменной отношения, а X и Y — произвольными подмножествами множества атрибутов переменной отношения R. Y функционально зависимо от X тогда и только тогда, когда для любого допустимого значения переменной отношения R, если два кортежа переменной отношения R совпадают по значению X, они также совпадают и по значению Y. Подмножество X называют детерминантом, а Y — зависимой частью. Функциональная зависимость тривиальна тогда и только тогда, когда ее правая (зависимая) часть является подмножеством ее левой части (детерминанта). Ситуация, когда отношение будет находиться в 3NF, но не в BCNF, возникает, например, при условии, что отношение имеет два (или более) потенциальных ключа, которые являются составными и имеют общий атрибут. На практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны. Четвёртая и пятая нормальные формы (4НФ, 5НФ). 4НФ исследует связи «многие ко многим» или «многие к одному». 4НФ не должна содержать 2-х и более не связанных многозначных фактов. Идем от противного: пусть есть 2 несвязанных факта: а) Обычный формат 22 1. Служащий проекты. 2. Служащий друзья. Служащий Иванов Иванов Иванов Иванов Иванов Проекты Пр1 Пр2 Пр3 Друзья Др1 Др2 б) Смешанный формат: 1. Минимум записей с пустыми значениями. Иначе возникает проблема, какому «Проекту» какого «Друга» приписать. Другими словами, возникает произвол в формировании таблиц; 2. Минимум записей с повторами; 3. Гибрид всех вариантов. Таким образом, наличие в первой таблице несвязанных фактов порождает массу проблем. Основным автором исследования 4НФ является Р. Фагин. Отношением в 4НФ называется либо данное отношение, если оно в 3НФ и при существовании многозначной зависимости, например, атрибутов В от атрибутов А, все остальные атрибуты отношения R зависят только от множества атрибутов А только функционально. Если это не выполняется, то отношением в 4НФ называется набор проекций отношения R, обладающий вышеуказанными свойствами. Все вышесказанное касается независимых несвязных проекций. 23 Вывод Первая лабораторная работа позволила получить нам основные сведения о реляционных БД. Благодаря списку вопросов, мы проработали на живых, интересных примерах основные понятия, введённые на лекциях, применительно к простейшим структурам сущностей баз данных. 24 Список литературы 1. Базы данных: методические указания по выполнению лабораторных работ / Е. П. Храмцова; Под ред. М. И. Антик — МИРЭА, 2003. — 32 с.; 2. Введение в системы баз данных: Пер. с англ. / Дейт К. Дж. — М.: Вильямс, 2006. — 1328 с.: ил. — Библиогр.: в конце гл. — ISBN 58459-0788-8; 3. Базы данных: Учебник для вузов / А. Д. Хомоненко, В. М. Цыганков, М. Г. Мальцев; Под ред. А. Д. Хомоненко. — СПб.: КОРОНА принт, 2006. — 736 с.: ил. — Библиогр.: в конце гл. — ISBN 5-7931-0346-5. 25