Базы Данных, 13 лекция (от 19 октября)
Материал из eSyr's wiki.
м (1 версий) |
Версия 14:42, 13 ноября 2007
БД
Виды ФЗ
Предварительные этапы проектирования БД. Человек должен рпоанализировать предметную область, каким образом атрибуты предм области, какие между ними существуют зависимости. Самый простой вид – функциональный. Множество всех ФЗ очень фирокое, для сужения его и оставления только тех, которые представляют интерес, можно построить покрытие.
//Определение покрытия
Переходим к минимизации:
S2 покрывает S1 т и тт, когда S1+ <= S2+, эквивалентны, когда S1+=S2+
Минимальное множество ФЗ:
S {FD} – минимальное, если удовл следующим свойствам
правая часть любой ФЗ, принадл S состоит из одного атрибута
детерминант любой ФЗ из S минимален
Минимальный детерминант:
Детерминант ФЗ минимален, если при удалении любого атрибута изменяетсязамыкание.
Удаление любой ФЗ приводит к изменению замыкания
Примеры:
Есть отношение СЛУЖАЩИЕ_ПРОЕКТЫ
{СЛУ_НОМ (возможный ключ), СЛУ_ИМЯ, СЛУ_ЗАРП, ПРО_НОМ, ПРОЕКТ_РУК }
{FD} {СЛУ_НОМ – СЛУ_ИМЯ, СЛУ_НО –
СЛУ_ЗАРП, СЛУ_НОМ – ПРО_НОМ, СЛУ_НОМ – ПРОЕК_РУК,
ПРО_НОМ – ПРОЕКТ_РУК} – МИНИМАЛЬНОЕ
(*) {СЛУ_НОМ – {СЛУ_ИМЯ, СЛУ_ЗАРП}, СЛУ_НОМ – ПРО_НОМ, СЛУ_НОМ – ПРОЕКТ_РУК, ПРО_НОМ – ПРОЕКТ_РУК} – не минимально, по 1
S- - минимальное множество
Общая схема построения:
С использованием аксиомы декомпозиции 5 приводим множество S к эквивалентному, удовлетворяющему 1
Пробуем выбросить ФЗ
Пример:
r{A, B, C, D} S={A-B, A-BC, AB-C, AC-D, B-C}
SL = {A-B, A-C, AB-C, AC-D, B-C}
почему можно удалить AC-D: A-C, A-AC, A-D
S- = {A-B, A-D, B-C}
Процедура трудоёмкая, делается достаточно долго.
S – множество ФЗ
Минимальным покрытием S является любое эквивалентное миним множество S1.
Декомпозиция отношения без потерь
В чем состоит классич проектироание РБД: на основе заголовков и отношений построить новую схему, котора в соотв с этими зависимостями будет обладать более хорошими свойстваим.
Декомп назыв декомп без потерь, это когда потом если у нас будет БД, наполненая кортежами, то если мы сделаем естественное слияние, то мы получим донормализовонное состояние без потерь.
Потери заключпаются в появлении лишних кортежей.
СЛУ_НОМ |
СЛУ_ИМЯ |
СЛУ_ЗАРП |
ПРО_НОМ |
ПРОЕКТ_РУК |
|
---|---|---|---|---|---|
2934 |
Иванов |
22000 |
1 |
Иванов |
|
2941 |
Иваненко |
22000 |
2 |
Иваненко |
|
|
|
|
|
|
|
СЛУЖ |
|
|
|
|
|
СЛУ_НОМ |
СЛУ_ИМЯ |
СЛУ_ЗАРП |
|
|
|
2934 |
Иванов |
22000 |
|
|
|
2941 |
Иваненко |
22000 |
|
|
|
|
|
|
|
|
|
СЛУ_ПРО |
|
|
|
|
|
СЛУ_НОМ |
ПРО_НОМ |
ПРО_РУК |
СЛУ_ЗАРП |
ПРО_НОМ |
ПРОЕКТ_РУК |
2934 |
1 |
Иванов |
22000 |
1 |
Иванов |
2941 |
2 |
Иваненко |
22000 |
2 |
Иваненко |
|
|
|
|
|
|
Есди сделать Join, то появятся лишние записи
Джойн не получился, потому что там не было первичного ключа в одной таблице.
Теорема Хита
r{A, B, C} и выполнены ФЗ A-B
Тогда r={r PROJECT{A,B}} NATURAL JOIN (r PROJECT {A, C})
||Всего в курсе три теоремы, одна лемма.
Пусть {a, b, c} принадлежит r
{a, b} принадлежит (r PROJECT {A, B}), {a, c} принадлежит (r PROJECT {A, C}) => {a, b, c} принадлежит r1
Если {a, b, c} принадлежит r1, to {a, b, c} prinadlezhit r {a, b} принадлежит (r PROJECT {a, b})
{a, c} принадлежит (r PROJECT {A, C}) => {a, b*, c} принадлежит r => b* = b
Обычно т. Хита используется, когда a – ключ.
Определение. Минимально зависимые атрибуты. B миним зависит от A, если имеется FD A->B, минимальный слева атрибут.
Мин слева атрибут полезная вещь, так как на них базируется первая НФ.
Сегодня, и завтра, и в следующий четверг мы будем говорить об атрибутах кк о составных атрибутах.
СЛУ_НОМ – > СЛУ_ЗАРП
{СЛУ_НОМ, СЛУ_ИМЯ} - > СЛУ_ЗАРП
Следующая тема:
Проектирование РБД на основе принципа нормализации
Что нужно делать для проектирования БД:
Стараться проектировать так, чтобы при изменениях приходилось делать минимум проверок:
Перва альтернатива – система позволяет делать изменения, но потом говорит, что неправильно всё, и стереть все результаты.
Вторая – триггеры.
Физическое проектирование: проектирование на уровне СУБД, формулирование, как я хочу выполнять запросы. Важный этап, но полностью зависит от того, как реализована СУБД. Сейяас у СУБД дикое количество рычажочков, ручечек, которые можно подкручивать.
Дополнительное Логическое проектирование. Которое не следует протоколам. Есть две области: online tracsaction processing – с бд выполняется много коротких транзакций с большими изменениями в бд. Вторая область – аналитическая – длинные транзакции с большими запросов, и там много агрегатных запросов. То есть я не прошу узнать год рождения конкретного человека, а обычно хочу узнать численность изменения по годам и районам от 1914 года до этого. Такие запосы обычно плохо выполняются над хорошо нормализованными данными.
Прежде чем ломать схему БД, надо сделать её сначала хорошей.
Проектирование с помощью нормализации – многошаговый процесс, пр и которым на каждом шаге при помощи проекции выделяются более простые схемы с более хорошими совйствами.
1NF – 2NF – 3NF – BCNF – 4NF – 5NF
1NF – конструкция, которая сущвует по историческим причинам, её ввёл Кодд, и по определениям лектора, они всегда не меньше первой нормальной формы
5NF – дальше улучшить свойства невозможно с помощью этого подхода
BCNF – придумали улучшенную формулировку НФ, которая принямала во внимание ...