Лекция № 9. Функциональные зависимости
Лекция № 9. Функциональные зависимости
1. Ограничение функциональной зависимости
Ограничения уникальности, накладываемые объявлениями первичного и кандидатных ключей отношения, является частным случаем ограничений, связанных с понятием функциональных зависимостей.
Для объяснения понятия функциональной зависимости, рассмотрим следующий пример.
Пусть нам дано отношение, содержащее данные о результатах какой-то одной конкретной сессии. Схема этого отношения выглядит следующим образом:
Сессия (№ зачетной книжки, Фамилия, Имя, Отчество, Предмет, Оценка);
Атрибуты «№ зачетной книжки» и «Предмет» образуют составной (так как ключом объявлены два атрибута) первичный ключ этого отношения. Действительно, по двум этим атрибутам можно однозначно определить значения всех остальные атрибутов.
Однако, помимо ограничения уникальности, связанной с этим ключом, на отношение непременно должно быть наложено то условие, что одна зачетная книжка выдается обязательно одному конкретному человеку и, следовательно, в этом отношении кортежи с одинаковым номером зачетной книжки должны содержать одинаковые значения атрибутов «Фамилия», «Имя» и «Отчество».
Если у нас имеется следующий фрагмент какой-то определенной базы данных студентов учебного заведения после какой-то сессии, то в кортежах с номером зачетной книжки 100, атрибуты «Фамилия», «Имя» и «Отчество» совпадают, а атрибуты «Предмет» и «Оценка» – не совпадают (что и понятно, ведь в них речь идет о разных предметах и успеваемости по ним). Это значит, что атрибуты «Фамилия», «Имя» и «Отчество» функционально зависят от атрибута «№ зачетной книжки», а атрибуты «Предмет» и «Оценка» функционально не зависят.
Таким образом, функциональная зависимость – это однозначная зависимость, затабулированная в системах управления базами данных.
Теперь дадим строгое определение функциональной зависимости.
Определение: пусть X, Y – подсхемы схемы отношения S, определяющие над схемой S схему функциональной зависимости X ? Y (читается «X стрелка Y»). Определим ограничения функциональной зависимости inv<X ? Y> как утверждение о том, что в отношении со схемой S любые два кортежа, совпадающие в проекции на подсхему X, должны совпадать и в проекции на подсхему Y.
Запишем это же определение в формулярном виде:
Inv<X ? Y> r(S) = t1, t2 ? r(t1[X] = t2[X] ? t1[Y] = t2 [Y]), X, Y ? S;
Любопытно, что в этом определении использовано понятие унарной операции проекции, с которым мы сталкивались раньше. Действительно, как еще, если не использовать эту операцию, показать равенство друг другу двух столбцов таблицы-отношения, а не строк? Поэтому мы и записали в терминах этой операции, что совпадение кортежей в проекции на какой-то атрибут или несколько атрибутов (подсхему X) непременно влечет за собой совпадение этих же столбцов-кортежей и на подсхеме Y в том случае, если Y функционально зависит от X.
Интересно заметить, что в случае функциональной зависимости Y от X, говорят также, что X функционально определяет Y или что Y функционально зависит от X. В схеме функциональной зависимости X ? Y подсхема X называется левой частью, а подсхема Y – правой частью.
На практике проектирования баз данных на схему функциональной зависимости для краткости обычно ссылаются как на функциональную зависимость.
Конец определения.
В частном случае, когда правая часть функциональной зависимости, т. е. подсхема Y, совпадает со всей схемой отношения, ограничение функциональной зависимости переходит в ограничение уникальности первичного или кандидатного ключа. Действительно:
Inv<K ? S> r(S) = ? t1, t2 ? r(t1[K] = t2 [K] ? t1(S) = t2(S)), K ? S;
Просто в определении функциональной зависимости вместо подсхемы X нужно взять обозначение ключа K, а вместо правой части функциональной зависимости, подсхемы Y взять всю схему отношений S, т. е., действительно, ограничение уникальности ключей отношений является частным случаем ограничения функциональной зависимости при равенстве правой части схемы функциональной зависимости всей схеме отношения.
Приведем примеры изображения функциональной зависимости:
{№ зачетной книжки} ? {Фамилия, Имя, Отчество};
{№ зачетной книжки, Предмет} ? {Оценка};
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Назначение и функциональные возможности программы
Назначение и функциональные возможности программы Программа HtmlPad адресована веб-разработчикам и веб-администраторам. Ее характерной особенностью является то, что она обладает простым и понятным пользовательским интерфейсом, а также очевидным инструментарием.
6.6. Функциональные клавиши и меню Файл
6.6. Функциональные клавиши и меню Файл До сих пор мы рассказывали только о внешнем виде экрана программы Midnight Commander и о том, как изменить этот вид. Теперь пора рассказать и том, как работать с файлами с помощью этой программы.Наиболее часто выполняемые в Midnight Commander операции
Функциональные клавиши
Функциональные клавиши
Функциональные возможности Excel
Функциональные возможности Excel Excel 2007 позволяет формировать и выводить на печать документы, представленные в табличном виде, выполнять расчеты на основании исходных данных и др. Задачи, решаемые с помощью табличного редактора Excel, кратко перечислены ниже.• Создание,
Назначение и функциональные возможности
Назначение и функциональные возможности Программа Microsoft Outlook 2007 обладает широкими функциональными возможностями, которые кратко можно сформулировать следующим образом:• выполнение функций персонального органайзера;• работа с электронной почтой (создание,
Функциональные клавиши
Функциональные клавиши Обычно вы посылаете команду ЭВМ, нажимая на клавишу с надписью enter (ввод), с/r (возврат каретки) или return (возврат). Названия клавиш иногда обозначаются прописными буквами. Пусть клавиша [enter] — [ввод]. Здесь квадратные скобки означают, что вы должны
Функциональные объекты
Функциональные объекты Функциональные объекты - это объекты, для которых определён operator(). Они важны для эффективного использования библиотеки. В местах, где ожидается передача указателя на функцию алгоритмическому шаблону, интерфейс установлен на приём объекта с
Другие функциональные сочетания клавиш
Другие функциональные сочетания клавиш
19.2.7. Конструкторы и функциональные try-блоки
19.2.7. Конструкторы и функциональные try-блоки Можно объявить функцию так, что все ее тело будет заключено в try-блок. Такие try-блоки называются функциональными. (Мы упоминали их в разделе 11.2.) Например:int main() {try {// тело функции main()}catch ( pushOnFull ) {// ...}catch ( popOnEmpty ) {// ...}Функциональный
Функциональные клавиши
Функциональные клавиши Для удобной работы с системой сохраняется возможность использования функциональных клавиш:• F1 – вызов справочной системы AutoCAD;• F2 – переключение между текстовым и графическим окнами;• F3 или Ctrl+F – включение/отключение текущих режимов объектной
3.3.1 Функциональные возможности
3.3.1 Функциональные возможности a) Установка (инсталляция)Если установка пакета может быть выполнена пользователем, то при ее проведении должна быть обеспечена возможность успешной установки программ в соответствии с информацией, содержащейся в руководстве по
4.1 Функциональные возможности (Functionality)
4.1 Функциональные возможности (Functionality) Набор атрибутов, относящихся к сути набора функций и их конкретным свойствам. Функциями являются те, которые реализуют установленные или предполагаемые потребности:Примечания1 Данный набор атрибутов характеризует то, что
А.2.1 Функциональные возможности (Functionality)
А.2.1 Функциональные возможности (Functionality) А.2.1.1 Пригодность (Suitability) Атрибут программного обеспечения, относящийся к наличию и соответствию набора функций конкретным задачам.Примечание - Примерами Соответствия является состав функций, ориентированных на задачу, из
4.1.2. Функциональные клавиши
4.1.2. Функциональные клавиши В верхней части клавиатуры размещено 12 (от F1 до F12) функциональных клавиш (рис. 30). Функции, выполняемые этими клавишами, зависят от работающей в данный момент программы, т. е. реакцию на нажатие каждой функциональной клавиши задает программист.