Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700213.doc
Скачиваний:
29
Добавлен:
01.05.2022
Размер:
1.33 Mб
Скачать

Функциональная зависимость (fd)

Пусть X и Y два множества атрибутов в схеме R.

Определение. X функционально определяет Y(обозначается Х→Y) тогда и только тогда, когда не

существует двух различных строк (векторов) в R с одноименными значениями из X и различными из Y.

Например, в классном журнале с атрибутами имя, присутствие и отметка за данное число. Атрибут имя функционально определяет все остальные атрибуты.

Функциональная зависимость позволяет определить базовое для РМ понятие первичного ключа отношения.

Определение. Множество атрибутов называется кандидатом в ключи для отношения, если оно функционально определяет все другие атрибуты и является минимальным множеством (т.е. ни один атрибут из множества не может быть исключен так, чтобы оно по-прежнему функционально определяло остальные).

Определение. Для любого отношения один из кандидатов в ключи отношения выделяется и называется первичным ключом.

Замечание. Первичный ключ не обновляется. Первичный ключ может быть использован для выбора спецификации строк в отношении и для того, чтобы связать отношение в нечто целое.

Определение. Первичный ключ для R1, помещенный в R2, называется вторичным ключом в R2.

Одно из основных правил целостности данных связано с первичным ключом. Целостность для элементов информации реляционной базы данных: ни одна строка таблицы не может принимать нулевое значение в каком-либо атрибуте из первичного ключа. Это свойство означает, что любые строки однозначно идентифицируемы.

Понятие функциональной зависимости позволяет определить и исследовать некоторые каналы утечки в базах данных, которые появляются из возможности вывода из одних объектов других (или еще один случай потока информации). Пусть множество F - это класс пар Х-->Y, X, YU=Attr(R) - множество атрибутов R.

Тогда: 1. Если YXU, то X->Y.

2. Если X->Y, Y->Z, X,Y,ZU, то X->Z.

3. Если X->Y, X->Z, X,Y ZU, то X->YZ.

4. Если X->Y, X->Z, X,Y,ZU, то X->YZ.

Определение. Множество пар функциональных зависимостей F+ называется замыканием множества пар функциональных зависимостей F, если F+ -множество всех функциональных зависимостей, которые порождаются множеством F при помощи пп.1, 2, 3, 4 теоремы 1, то есть конструктивно построены, исходя из F, используя правила теоремы.

Определение. Два множества функциональных зависимостей (FD) F и G называются эквивалентными, если F+=G+.

Определение. Множество F функциональных зависимостей называется редуцированным, если:

1) в F нет двух пар Х→Y и X'→Y' таких, что X=X' и YY';

2) для всех X→Y в F XY=0.

Использование функциональной зависимости для компрометации базы данных иллюстрируется следующим простым примером.

Пример 1. Пусть R - отношение в реляционной базе данных некоторой компании, содержащее атрибуты имя - ранг - зарплата. Предположим, что зарплата - совершенно секретные сведения, а имя и ранг - секретные. Предположим также, что в R выполняется следующая функциональная зависимость РАНГ -> зарплата, что означает, что все служащие одного ранга получают одинаковую зарплату. Тогда пользователь, имеющий допуск к данным не выше секретно, может получить допуск к совершенно секретной информацию о конкретном лице, если он знает соответствие ранг-зарплата хотя бы для некоторых лиц.

Для того чтобы проанализировать возможность возникновения подобных зависимостей, надо изучить все множество F+ для набора исходных зависимостей F. Это удобнее сделать, если F - редуцированное множество, что не ограничивает общности, благодаря доказанной теореме.