Базы Данных, 13 лекция (от 19 октября)

Материал из ESyr's Wiki pages.

Перейти к: навигация, поиск

БД


Виды ФЗ


Предварительные этапы проектирования БД. Человек должен рпоанализировать предметную область, каким образом атрибуты предм области, какие между ними существуют зависимости. Самый простой вид – функциональный. Множество всех ФЗ очень фирокое, для сужения его и оставления только тех, которые представляют интерес, можно построить покрытие.


//Определение покрытия


Переходим к минимизации:

S2 покрывает S1 т и тт, когда S1+ <= S2+, эквивалентны, когда S1+=S2+


Минимальное множество ФЗ:

S {FD} – минимальное, если удовл следующим свойствам

  1. правая часть любой ФЗ, принадл S состоит из одного атрибута

  2. детерминант любой ФЗ из S минимален

Минимальный детерминант:

Детерминант ФЗ минимален, если при удалении любого атрибута изменяетсязамыкание.

  1. Удаление любой ФЗ приводит к изменению замыкания


Примеры:

Есть отношение СЛУЖАЩИЕ_ПРОЕКТЫ

{СЛУ_НОМ (возможный ключ), СЛУ_ИМЯ, СЛУ_ЗАРП, ПРО_НОМ, ПРОЕКТ_РУК }

{FD} {СЛУ_НОМ – СЛУ_ИМЯ, СЛУ_НО – СЛУ_ЗАРП, СЛУ_НОМ – ПРО_НОМ, СЛУ_НОМ – ПРОЕК_РУК, ПРО_НОМ – ПРОЕКТ_РУК} – МИНИМАЛЬНОЕ


(*) {СЛУ_НОМ – {СЛУ_ИМЯ, СЛУ_ЗАРП}, СЛУ_НОМ – ПРО_НОМ, СЛУ_НОМ – ПРОЕКТ_РУК, ПРО_НОМ – ПРОЕКТ_РУК} – не минимально, по 1


S- - минимальное множество


Общая схема построения:


  1. С использованием аксиомы декомпозиции 5 приводим множество S к эквивалентному, удовлетворяющему 1

  2. Пробуем выбросить ФЗ


Пример:

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.


Декомпозиция отношения без потерь

В чем состоит классич проектироание РБД: на основе заголовков и отношений построить новую схему, котора в соотв с этими зависимостями будет обладать более хорошими свойстваим.

Декомп назыв декомп без потерь, это когда потом если у нас будет БД, наполненая кортежами, то если мы сделаем естественное слияние, то мы получим донормализовонное состояние без потерь.

Потери заключпаются в появлении лишних кортежей.


<COL WIDTH=80> <COL WIDTH=81> <COL WIDTH=84> <COL WIDTH=82> <COL WIDTH=107> <COL WIDTH=101> <THEAD> </THEAD> <TBODY> </TBODY>

СЛУ_НОМ

СЛУ_ИМЯ

СЛУ_ЗАРП

ПРО_НОМ

ПРОЕКТ_РУК


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 – придумали улучшенную формулировку НФ, которая принямала во внимание ...

Личные инструменты