- •Понятие и принципы построения баз данных.
- •Отношения. Переменные-отношения. Смысл отношений, свойства отношений. Домены.
- •Ключи переменных-отношений. Виды ключей.
- •Трехуровневая архитектура базы данных. Внешний, концептуальный и внутренние уровни.
- •Независимость данных.
- •Назначения и функции субд.
- •Реляционная алгебра – реляционный язык обработки данных.
- •Традиционные и специальные операции реляционной алгебры: объединение, пересечение, вычитание, декартово произведение, проекция, выборка, ө соединение, естественное соединение, деление.
- •Понятие функциональной зависимости для отношения. Основные определения. Способ определения ф.З. Тривиальные и нетривиальные зависимости.
- •Замыкание множества зависимостей. Аксиомы Армстронга.
- •Нормализация. Первая, вторая и третья нормальные формы отношения.
- •Определение базы данных на sql (операторы определения и манипулирования данными).
- •Понятие целостности. Классификация ограничений целостности базы данных.
- •Представления. Создание и использование представлений. Создание запросов к представлению.
- •Хранимые процедуры.
- •Триггеры.
- •Транзакция. Acid – свойства транзакций. Уровни изоляции транзакций. Проблемы параллелизма при работе с транзакциями в многопользовательском режиме.
- •Защита данных. Средства защиты данных языка sql.
- •Понятия предметной области. Определение сущностей, связей и их свойств. Типы связей. Построение er-диаграмм.
- •Проектирование реляционной базы данных. Определение состава таблиц (алгоритм перехода от er-модели к реляционной модели данных).
- •Основные понятия распределенных бд (рбд). Основные принципы рбд.
- •Репликация (тиражирование). Преимущества и недостатки тиражирования.
- •Безопасность бд в рбд. Системные и объектные привилегии.
Понятие функциональной зависимости для отношения. Основные определения. Способ определения ф.З. Тривиальные и нетривиальные зависимости.
Семантическая часть описывает множество функциональных зависимостей, существующих между атрибутами этих отношений. Дадим определение функциональной зависимости.
Если даны два атрибута X и Y некоторого отношения, то говорят, что Y функционально зависит от X, если в любой момент времени каждому значению X соответствует ровно одно значение Y. Функциональная зависимость обозначается X -> Y.
Отметим, что X и Y могут представлять собой не только единичные атрибуты, но и группы, составленные из нескольких атрибутов одного отношения. Можно сказать, что функциональные зависимости представляют собой связи типа "один ко многим", существующие внутри отношения.
Детерминантом функциональной зависимости X -> Y называется X (атрибут или группа атрибутов в левой части зависимости).
Некоторые функциональные зависимости могут быть нежелательны.
Избыточная функциональная зависимость - зависимость, заключающая в себе такую информацию, которая может быть получена на основе других зависимостей, имеющихся в базе данных. Функциональная зависимость X -> Y называется полной, если неключевой атрибут Y не зависит функционально от любого точного подмножества X.
Функциональная зависимость X -> Y называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости X -> Z, Z -> Y и отсутствует функциональная зависимость Z-> X. (При отсутствии последнего требования мы имели бы "неинтересные" транзитивные зависимости в любом отношении, обладающем несколькими ключами.)
Два атрибута взаимно зависимы, если один из них функционально зависит от другого и наоборот. Обозначают: A<->B.
Два атрибута взаимно независимы, если ни один из них не является функционально зависимым от другого.
Выявление функциональных зависимостей между атрибутами необходимо для определения первичного ключа отношения и для выполнения проектирования БД методом нормальных форм.
Так, все неключевые атрибуты отношения функционально зависят от ключа с разной степенью зависимости. Таким образом, первичным ключом является атрибут или группа атрибутов, которые являются детерминантами всех функциональных зависимостей отношения. Более точно – один из минимальных наборов атрибутов, от которых функционально зависят все остальные атрибуты отношения.
Основной способ определения наличия функциональных зависимостей – анализ смысла и взаимосвязи атрибутов на основе практических примеров их различных комбинаций. В общем случае следует проанализировать вопрос наличия функциональных зависимостей между всеми возможными парами атрибутов. При этом каждый из атрибутов может быть как простым, так и составным.
Для выявленного множества функциональных зависимостей можно построить множество выводимых функциональных зависимостей, наличие которых определяется наличием исходных зависимостей. Для построения множества выводимых зависимостей следует использовать одну из нескольких систем аксиом вывода зависимостей и/или один из методов вывода зависимостей. Вопросы, связанные с выводом функциональных зависимостей мы рассмотрим на следующей лекции.
Формальное определение функциональной зависимости: Даны атрибуты X и Y, атрибут Y функционально зависит от X, если в каждый момент времени каждому значению X соответствует одно и то же значение Y. (X -> Y) Для каждого отношения существует вполне определенное множество функциональных зависимостей между атрибутами. Аксиомы ФЗ позволяют из одной ФЗ вывести другие также присущие данному отношению.
Аксиомы:
1. Свойство рефлексивности, если множество В является подмножеством множества А, то А -> В.
2. Свойство пополнения, если A -> B, то АС -> ВС.
3. Свойство транзитивности, если A -> B и B -> C, то A -> C.
Каждое из этих трех правил может быть непосредственно доказано на основе определения ФЗ (первое из них – просто определение тривиальной зависимости).
Типы функциональных зависимостей:
1. Частичная, если неключевой атрибут зависит только от части ключа.
2. Функциональная зависимость XY называется полной, если атрибут Y не зависит функционально от любого точного подмножества X. т.е. Существует функциональная зависимость X+ZY, и нет функциональных зависимостей XY, ZY.
Функциональная зависимость XY называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости XZ и ZY и отсутствует функциональная зависимость ZX. Зависимость называется тривиальной, если она не может не выполняться. Зависимость является тривиальной тогда и только тогда, когда правая часть ее правой записи является подмножеством левой части. ( S#, P#) -> S#. Нетривиальные зависимости являются реальными ограничениями целостности.
