2) Группировка атрибутов должна обеспечивать минимальное дублирование данных.
Удовлетворение этих требований достигается нормализацией отношений БД – пошаговый обратимый процесс декомпозиции (разложения) исходных отношений на более мелкие и простые отношения. При этом устраняются все нежелательные функциональные зависимости. Аппарат нормализации был разработан Е. Коддом.
В чём определяются различные нормальные формы (НФ)? Кодд выделил три НФ. На сегодня определены ещё четвёртая и пятая. Каждая НФ ограничена определённым типом ФЗ и устраняет соответствующие аномалии при вычислении операций над отношениями. При декомпозиции встает проблема обратимости. Декомпозиция гарантирует такое восстановление без потерь. В результате применения последовательности операций естественных соединений над проекциями исходных отношений должно получиться отношение, эквивалентное исходному, причём в результирующем отношении не должны появляться раньше отсутствующие кортежи – следствия ошибочного соединения.
Если есть атрибуты А и В, говорят что В функционально зависит от А, если для каждого значения А в любой момент времени существует ровно одно связанное с ним значение В, причём А и В могут быть составными – представлять собой группы, состоящие из 2-х и более атрибутов.
I нормальная форма
Простой атрибут – атрибут, значения которого неделимы, атомарны.
Сложный атрибут – атрибут, значение которого представляет собой конкатенацию значений одного/нескольких доменов (аналоги – агрегат, вектор, повторяющаяся группа)
Отношение находится в первой нормальной форме (НФ), если все атрибуты простые (атомарные) и нет повторяющихся групп. Отношение в I НФ должно быть прежде постановки вопроса о разбиении на два или более отношений, т.е. к I НФ необходимо привести универсальное отношение.
Универсальное отношение – отношение, в состав которого входят все атрибуты проектируемой БД.
Пример:
Сотрудники
ФИО | Таб. № | Отдел | Тел. | Дети | |
Имя | Возраст | ||||
БорисовБорисов | 211211 | СССС | 3-573-57 | ИванМиша | 1015 |
АндреевАндреев | 364364 | УПУП | 2-152-15 | МашаЕгор | 64 |
II нормальная форма
Отношение находится во II НФ, если оно находиться в I НФ, и каждый не ключевой атрибут функционально полно зависит от составного ключа.
Чтобы привести отношение ко 2 НФ необходимо:
1) Построить его проекцию, исключив атрибуты, которые не находятся в полной функциональной зависимости от составного ключа;
2) построить дополнительно одну или несколько проекций на часть составного ключа и атрибуты, функционально зависящие от этой части ключа. Атрибуты, функционально зависящие от одной и той же части ключа, объединяются в одно отношение.
Пример:
Универсальное отношение "Сотрудник" разбивается на два отношения:
Сотрудники Дети
Таб. № | ФИО | Отдел | Тел. | Таб. № | Имя | Возраст |
211 | Борисов | СС | 3-57 | 211 | Иван | 10 |
211 | Миша | 15 | ||||
364 | Андреев | УП | 2-15 | 364 | Маша | 6 |
364 | Егор | 4 |
Наличие транзитивной зависимости порождает неудобства и аномалии следующего характера (например, атрибут Тел.):
1) Имеет место дублирование информации для сотрудников одного отдела;
2) Существует проблема контроля избыточности, поскольку изменение номера телефона отдела ведёт к необходимости поиска и замены номеров сотрудников отдела;
3) Аномалия добавления и удаления: нельзя включить данные о новом отделе, если на данный момент отсутствуют его сотрудники, и наоборот: при увольнении всех сотрудников отдела данные о нём нельзя сохранить.
Таким образом, отношение во II НФ также может потребовать дальнейших преобразований.
III нормальная форма
Отношение находиться в III НФ, если оно находиться во II НФ и в нём отсутствует транзитивная зависимость неключевых атрибутов от ключа.
Для преобразования к III НФ необходимо построить несколько проекций.
Пример:
(в нашем случае — отношение "Сотрудник" разбить на два: Отдел – Тел.,
Таб. № - ФИО – Отдел).
Сотрудники | Отдел | Дети | |||
Таб. № | ФИО | Отдел | Отдел | Тел. | Дети- // - |
211 | Борисов | СС | СС | 3-56 | |
364 | Андреев | УП | УП | 2-15 |
В итоге получили три таблицы: "Сотрудники", "Отдел", "Дети"
III НФ освобождает от избыточности и аномалий редактирования, если отношения имеют один ключ и другие зависимости (в т.ч. многозначные) в нём отсутствуют.
Но если имеются многозначные зависимости от ключа, то III НФ не обеспечивает отсутствия аномалий обновления. В этом случае применяют усиленную III НФ.
Усиленная III нормальная форма (Бойса-Кодда) НФБК
Отношение находятся в НФБК, если оно находится в III НФ, и в нём отсутствуют зависимости ключей от не ключевых атрибутов.
Пусть имеется отношение R(А, В, С) с ключом К = {А, В}. Между атрибутами этого отношения существуют ФЗ А, В ® С и С ® В:
А, В ® С – зависит от ключа
С ® В – зависимость ключа от не ключевых атрибутов
Пример:
А – адрес, В – город, С – индекс;
Проект (Деталь#, Проект#, Поставщик#);
Дет#, Пр# ® Пост#, Пост# ® Пр#
Каждый проект может обслуживаться несколькими поставщиками, но любой поставщик обслуживает только один проект.
Для приведения к НФБК необходимо выполнить
1)
;2)
.Хотя существует НФ более высокого уровня, которые накладывают даже более сильные ограничения на отношения, на практике обычно стараются получить отношение НФБК.
Переход к НФБК происходит не по схеме
, а с использованием более общего подхода к декомпозиции отношения.IV нормальная форма
Отношение, находится в IV НФ, если оно находится в НФБК, но в нем отсутствуют многозначные зависимости. IV НФ показывает, что отношение может находиться в НФБК, но тем не менее могут существовать аномалии, особенно при добавлении.
Например, для отношения преподаватель Препод (ФИО, группа, предмет) при появлении у преподавателя новой группы в отношение приходится добавлять не один кортеж, а столько, сколько предметов он читает в этой группе. Аналогичная ситуация возникает при добавлении в отношение нового предмета.
Устранение аномалий достигается разложением исходного отношения на несколько отношений с многозначной зависимостью от одного и того же ключа.
В нашем случае "Препод" разбивается на:
Предмет (ФИО, предмет)
Группа (ФИО, группа)
1.3Достоверность и безопасность информации
Поскольку первичное заполнение таблиц и ввод их в машину ведет человек, ошибки в данных являются не исключением, а правилом, и любая ИС должна иметь средство для диагностики и исправления ошибок.
Нарушение логической взаимосвязи – это логические (семантические) ошибки, ошибки смысла, которые могут быть обнаружены аппаратом формального логического контроля, построенным для ИС. Кроме того, конкретная ИС может иметь собственные средства дополнительного ("нестандартного") контроля, так как стандартные средства не могут охватить все возможные случаи. В современных СУБД имеются средства поддержания целостности данных. Кроме того, в современных ИС можно указать условия, которым должны удовлетворять значения некоторых полей (условия верификации данных).
Гораздо сложнее дело обстоит с ошибками в допустимых значениях данных. Такие ошибки условно называются арифметическими, хотя это не совсем точно, так как ошибочно может быть записано значение текстового данного: например, Иванов И.П. вместо Иванов А.П. Существует ряд средств для выявления арифметических ошибок, однако на пользовательском уровне ограничиваются простым визуальным контролем.
Термин "безопасность" относится к защите базы данных от несанкционированного доступа. Под безопасностью БД подразумевается, что пользователям разрешается выполнять некоторые действия. Под целостностью подразумевается, что это действие выполняется корректно.
Существуют различные аспекты безопасности:
- правовой;
- физический;
- аппаратное обеспечение;
- безопасность БД.
СУБД поддерживает два подхода доступа к данным: избирательный и обязательный. В случае избирательного управления пользователь обладает различными правами при работе с разными объектами. В случае обязательного управления каждому объекту данных присваивается некоторый уровень доступа, а каждый пользователь обладает определенным уровнем. Доступом к определенному объекту обладает только пользователь с соответствующим уровнем доступа.
Избирательное управление доступом.
Для определения правил безопасности нужно использовать некоторый язык:
CREATE SECURITY RULE <правило>
GRANT <списокпривилегий>
ON <выражение>
TO <список пользователей>
[ONATTENTEDVIOLATION <действие>]
<правило> — имя нового правила безопасности;
<список привилегий> может быть представлен:
RETRIEVE [<список атрибутов>]
INSERT
UPDATE [<список атрибутов>]
DELETE
ALL
<выражение> — подразумевает выражение реляционного исчисления, в котором задано диапазоном действие данного правила. Диапазоном является некоторое подмножество кортежей единственного отношения.