Базы Данных, 13 лекция (от 19 октября)
Материал из ESyr's Wiki pages.
БД
Виды ФЗ
Предварительные этапы проектирования БД. Человек должен рпоанализировать предметную область, каким образом атрибуты предм области, какие между ними существуют зависимости. Самый простой вид – функциональный. Множество всех ФЗ очень фирокое, для сужения его и оставления только тех, которые представляют интерес, можно построить покрытие.
//Определение покрытия
Переходим к минимизации:
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 – придумали улучшенную формулировку НФ, которая принямала во внимание ...