
- •Содержание
- •1. Основные понятия баз данных
- •1.1. Проектирование баз данных
- •1.2. Индексы и ключи в базах данных
- •2. Функциональные зависимости
- •2.1. Понятие функциональной зависимости
- •2.2. Метод синтеза
- •2.3. Аксиомы вывода
- •2.4. Применение аксиом вывода
- •2.5. Замыкание множества атрибутов относительно множества функциональных зависимостей
- •2.6. Эквивалентность двух систем функциональных зависимостей
- •2.7 Метод синтеза
- •2.8. Классы эквивалентности функциональных зависимостей с эквивалентными левыми частями
- •2.9. Составные функциональные зависимости и кольцевые покрытия
- •3. Нормализация баз данных
- •3.1. Декомпозиция таблицы на две таблицы без потери информации и с потерей информации
- •4. Иерархия в базах данных
- •4.1. Использование иерархии в базах данных
- •4.2. Инклюзивная и эксклюзивная иерархии
- •5. Сортировка и поиск записей в базах данных
- •5.1.Многофазная сортировка
- •7. Оптимизация запросов
- •7.1. Основные операции реляционной алгебры и их обозначения
- •8. Статистические данные, используемые для минимизации запросов
- •8.1. Анализ стоимости операций
- •8.2. Оценка размеров промежуточных отношений
- •8.2.1. Оценка размера результата операции объединения
- •8.2.2. Оценка размера результата операции пересечения
- •8.2.3. Оценка размера результата оператора проекции
- •8.2.4. Оценка размера результата оператора выбора
- •8.3. Выборка с условием равенства двух атрибутов
- •8.4. Выборка при условии неравенства двух атрибутов
- •8.5. Естественное соединение отношений с несколькими общими атрибутами
- •8.6. Соединение нескольких отношений
- •8.7. Оценка размеров результатов выполнения других операторов
- •8.7.1. Объединение
- •8.7.2. Пересечение
- •8.7.3. Разность
- •8.7.4. Удаление кортежей-дубликатов
- •8.7.5. Группирование и агрегирование
- •8.8. Свод формул для сравнительного расчета количества записей результата выполнения операций реляционной алгебры
- •8.9. Тождественные преобразования для операций реляционной алгебры
- •8.10. Алгебраические законы и планы запросов
- •8.10.1. Коммутативный и ассоциативный законы
- •8.11. Законы для "множественных" и "мультимножественных" версий операторов
- •8.11.1. Законы выбора
- •8.11.2. Некоторые тривиальные законы
- •8.11.3. Законы проекции
- •8.11.4. Законы соединения и декартова произведения
- •8.11.5. Законы, касающиеся удаления кортежей-дубликатов
- •8.11.6. Законы группирования и агрегирования
- •8.11.7. Закон деления
2.5. Замыкание множества атрибутов относительно множества функциональных зависимостей
Пусть дано X R – множество атрибутов, система функциональных зависимостей f.
-
замыкание множества атрибутов по
множеству функциональных зависимостей.
Пример.
,
X=AE,
.
Выписывается множество атрибутов (текущее).
Каждая ФЗ проверяется на предмет включения ее в левой части в текущее множество атрибутов.
Если включается левая часть, то в текущее множество атрибутов добавляется правая часть функциональной зависимости, кроме тех атрибутов, которые есть в текущем множестве атрибутов.
Если в результате повторной проверки всех функциональных зависимостей, ни одна из ФЗ не добавит элементов в текущее множество атрибутов, то текущее множество атрибутов становится замыканием.
.
Теорема. Функциональная
зависимость
выводима
из множества функциональных зависимостей
f
тогда и только тогда, когда замыкание
атрибутов левой части этой зависимости
по f
включает в себя ее правую часть.
.
Доказательство. Пусть
,
.
Докажем с помощью аксиомы проективности.
1)
- не выполняется;
2)
-
выполняется, AX
AXY=
.
Обратное доказывается аналогично с помощью аксиомы аддитивности.
2.6. Эквивалентность двух систем функциональных зависимостей
Две системы q и f двух функциональных зависимостей эквивалентны тогда и только тогда, когда все функциональные зависимости из q выводятся из f и все функциональные зависимости из f выводятся из q.
f≡q ≡ (f q & q f).
Пример.
Множества
f=
и g=
эквивалентны.
f |= A→BCE,
f |= A→ABD,
f |= CD→E,
g |= A→BC,
g |= A→D,
g |= CD→E.
1) A→BCE |= A→BC,
A
ABCED=
.
2) A→D |= A→ABD,
=ABD.
3)
=A
ABC
ABCD
ABCDE,
=ABCD.
2.7 Метод синтеза
1. Построение неизбыточного покрытия.
Покрытие является неизбыточным, если из него нельзя удалить ни одной функциональной зависимости, не нарушая эквивалентности системы.
,
,
где
- все
оставшиеся зависимости от f
или
,
то есть g
|= x→y.
≡
.
2. Левая редукция.
,
.
Множество функциональных зависимостей леворедуцированно, если нельзя удалить из левой части ни одного атрибута.
3. Правая редукция.
≡
.
.
g |= X→A.
Множество функциональных зависимостей праворедуцированно, если нельзя удалить из правой части ни одного атрибута.
Пример.
,
,
.
.
2.8. Классы эквивалентности функциональных зависимостей с эквивалентными левыми частями
Имеем два множества атрибутов X и Y и множество функциональных зависимостей f. X и Y эквивалентны относительно f в том случае, если выполняется f |= X→Y & f |= Y→X.
Если есть зависимости X→Y и V→W в f и множества X и V эквивалентны, то эти две зависимости называются зависимостями с эквивалентными левыми частями.
На основе введенных отношений эквивалентности множество функциональных зависимостей разбивается на классы эквивалентности.
Ef (AB) - класс эквивалентности функциональных зависимостей, у которых левые части эквивалентны AB
.
Ef (A) = {A→BC, B→A}.
Ef (AD) = {AD→E}.
Этап построения классов эквивалентности определяет минимальное количество таблиц, а именно каждый класс эквивалентности составляет одну таблицу.
В первом приближении функциональные зависимости , входящие в первый класс эквивалентности, определяют множество ключей для первой таблицы.
Построение минимального покрытия:
,
,
f≡g.
Критерий.
f≡g <=> |= X→V.
Пример.
,
Ef (A) = {A→BC, B→A}.
Ef (AD) = {AD→E, BD→J}.
f
\ Ef
(A)
|= A→B
<=>
-не верно.
f \ Ef (AD) |= AD→BD.
AD
ADBC,
.