
- •Введение.
- •Информация и данные.
- •Выч. Система
- •Админ-р
- •Жизненный цикл БнД.
- •Классификация БнД.
- •Преимущества организации субд.
- •Недостатки организации бд.
- •Проектирование бд. (общий подход)
- •Независимость данных (2 уровня).
- •Концептуальное проектирование. Модели данных. Модель сущность-связь.
- •Инфологические мд.
- •Модель результ.
- •Объединение локальных моделей в глобальные.
- •Логическое проектирование.
- •Сетевая модель данных.
- •Правила построения сетевой модели.
- •Реляционная модель данных.
- •Плоский файл.
- •Хронологическая модель данных.
- •Операции над данными.
- •Операции реляционной алгебры.
- •Операторы обновления:
- •Реляционные сравнения:
- •Реляционное исчисление с переменными-кортежами.
- •Реляционное исчисление с переменными на доменах.
- •Реляционные ямд.
- •Язык запросов в sql.
- •Защита баз данных.
- •Функциональные зависимости.
- •Покрытие множества зависимостей.
- •Вычисление замыканий.
- •Декомпозиция схем отношений.
- •Нормализация отношений.
- •Алгоритм1: пополняющий декомпозицию схем отношений, которая обладает свойством соединения без потерь и приводит к отношениям находящимся в нфбк.
- •Алгоритм 2: приведения отношения к 3нф, использующей декомпозицию, сохраняющую функциональные зависимости.
- •Многозначные зависимости.
- •Правила вывода (аксиомы) для многозначных зависимостей.
- •Аксиомы, связывающие функциональные зависимости и многозначные зависимости.
- •Правила вывода:
- •Алгоритм вычисления базиса:
- •Секретность данных.
- •Физическая организация бд.
- •Методы доступа к данным.
- •Оптимизация запросов.
- •Общие стратегии оптимизации:
- •Законы оптимизации.
- •Алгоритм оптимизации выражений ра.
- •Точная оптимизация для подмножества реляционных запросов.
- •Минимизация конъюнктивных запросов.
- •Правила построения табло запросов:
- •Метод нахождения min-го запроса для простого тз.
- •Параллельные операции над бд.
- •Основные понятия.
- •Бесконечные ожидания и тупики.
- •Протоколы и расписание.
- •Простая модель транзакции.
- •Метод, позволяющий определить сериализуемость расписания.
- •Модель с блокировками для чтения и записи.
- •Параллельный доступ к иерархически структурированным элементам.
- •Алгоритм проверки сериализуемости расписания.
- •Защита от отказов.
- •Меры для восстановления бд.
- •Модификация запросов в распределенных бд.
- •Фрагменты отношений.
Законы оптимизации.
З-н коммутативности для соединения и декартова произведения. Если и
реляционные выражения, а
условие, налагаемое на атрибуты и , то:
З-н ассоциативности для соединения и декартова произведения:
Законы, касающиеся операций селекции и проекции:
Каскад проекций:
если
Следствие: если
проекция по всем атрибутам отношения,
то она растворяется:
Каскад селекций:
Перестановка селекции и проекции:
.
Следствие: Если
входят в F, то
Перестановка селекции с декартовым произведением. Если все атрибуты, упоминающиеся в являются атрибутами , то
Если в F входят только атрибуты выражения
то наоборот:
Следствия:
1. если
имеет вид
,
где
включает только атрибуты
,
а
только атрибуты
,
то в соответствии с законами 1, 4, 6 имеем:
если в используется только атрибут , а в – атрибуты
, то
Таким образом, часть селекции может быть выполнена до произведения. Соединение всегда может быть выражено как декартово произведение с последующей селекцией, а в случае естественного соединения – проекцией.
Если имена атрибутов в и различаются, мы должны заменить атрибут в правой части формулы соответствующими именами в .
Перестановка селекции с объединением:
Перестановка селекции с разностью:
Перестановка проекции с декартовым произведением.
Пусть
и
– реляционные выражения;
список их атрибутов, причем
атрибуты выражения
,
а остальные
атрибуты выражения
,
тогда:
.
Перестановка проекции с объединением:
Если
имена атрибутов в
и (или)
отличны от имен атрибутов в
,
мы должны заменить
в правой части соответствующими именами.
Алгоритм оптимизации выражений ра.
Исходные данные – дерево разбора, представляющее выражения РА. Выходные – тоже дерево, но оптимизированное (программа, для вычисления выражения).
Метод:
Каждую селекцию представляем в виде каскада по правилу 4):
;
Перемещаем каждую селекцию насколько это возможно вниз по дереву, используя правила 5)-8);
Перемещаем каждую проекцию в дереве вниз настолько, насколько это возможно, используя правило 3), которое приводит к исчезновению некоторых проекций, следствие из 5), которое расщепляет на несколько, и правила 9) и 10);
Комбинируем каждый каскад селекций и проекций в одиночную селекцию, одиночную проекцию, или селекцию с последующей проекцией, используя правила 3) – 5);
Разбиваем внутренние узлы полученного в результате дерева на группы следующим образом. Каждый внутренний узел представляет собой двуместный оператор (\,
), принадлежащий группе вместе с его непосредственными предками, которые помечены унарными операторами (
). Включаем также в группу любую цепь потомков данного узла, помеченных унарными операторами, завершающуюся в листе.
Исключением является случай, когда двуместный оператор представляет собой декартово произведение без последующей селекции, которая комбинировалась бы с произведением, образуя эквисоединение.
Создаем программу из нескольких шагов для вычисления каждой группы в любом порядке, но так, чтобы никакая группа не вычислялась раньше групп – ее потомков.
Шаги алгоритмов могут быть:
выполнение одиночной селекции или проекции;
выполнение декартового произведения, объединения, либо разности множеств, которые, возможно, предшествуют или за которыми следуют селекция или проекция, применяемая к одному или обоим операндам.
Пример:
Рассмотрим БД «библиотека», состоящую из отношений:
Книги (название; автор; издательство;
инв. №)
Издатель (издательство; город; адрес)
Читатели (ФИО; город; адрес; № читательского
билета)
Выдача (инв. №; № читательского билета;
дата)
Для того, чтобы знать,
у кого находится какая книга, можно
использовать отношения
,
которые могут быть представлены следующим
образом:
(1)
F=(R3.№_читательского_билета=R4.№_читательского_билета) (R1.инвентарный_№=R4.инвентарный_№)=F1F2
X= название; автор; издательство; инв. №; ФИО читателя; город; адрес; № читательского билета; дата.
Опишем запрос: перечислить книги, которые были выданы до 01.01.2000.
После подстановки S в (1) получаем следующее дерево разбора:
1-й шаг: расщепление
селекции
на две:
.
2-й шаг: перемещаем
каждую из 3-х селекций как можно ниже в
дереве. Селекцию
перемещаем ниже проекции и двух селекций
по правилам 4) и 5).
Селекция
применяется к
,
и т.к. дата – единственный атрибут
,
то можно записать:
Селекция
не может быть перемещена ниже соединения,
т.к. в
используется отношение
и
.
Селекция
может быть применима к
.
3-й шаг: можно скомбинировать две проекции в одну по правилу 3):
4-й шаг: по обобщенному правилу 5) делаем замену:
5-й шаг: применим
правило 9) с целью замены последней
проекции на
,
применим к
и
,
применим к левому операнду декартова
произведения более высокого уровня
(см. последний рисунок).
Последняя проекция взаимодействует с помещенной ниже селекцией по обобщенному правилу 5). В результате получаем каскад:
6-й шаг: последнюю проекцию можно записать в виде (она просеивается через декартово произведение по правилу 9) и частично через селекцию по правилу 5)):
Так как в проекции упоминаются все атрибуты , то ее удаляем. Каждое из декартовых произведений является фактически эквисоединением, если скомбинировать его с селекцией, находящейся выше в дереве.
Программа, выполняющая этот алгоритм, сначала будет выполнять нижнюю группу, затем верхнюю.
- - - – группы операторов.
|
|