Изменения

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

Цели и средства нормализации

628 байт добавлено, 18:50, 13 января 2021
м
Средства нормализации
'''Нормализация''' — процесс преобразования отношений реляционной базы данных к виду, отвечающему одной из нормальных форм.
}}
Нормализацию целесообразно понимать следующим образом: она Нормализация помогает спроектировать привести базу данных таким образом, чтобы сделать более логически приемлемыми операции обновления отдельных кортежей, что в противном случае (т.е. когда проект базы данных не нормализован) может оказаться затруднительнымк виду обеспечивающему минимальную логическую избыточность. Эта цель достигается благодаря тому, что в полностью нормализованном проекте предикаты переменных отношения имеют более простой вид.
__TOC__
===Цели===
* Исключение некоторых типов избыточности
* Устранение аномалий
* Разработка проекта базы данных, который является достаточно "качественным" «качественным» представлением реального мира, интуитивно понятен и может служить хорошей основой для последующего расширения
* Упрощение процедуры применения необходимых ограничений целостности
 
===Следствия===
Полная нормализация приводит к замедлению работы базы так как увеличивается количество увеличению количества логически независимых переменных отношения ⇒ увеличивается количество отдельно хранимых физических файлов, что в свою очередь приводит может привести к появлению большего количества операций ввода-вывода, что и замедляет работуснижению скорости выборки ⇒ к замедлению работы базы данных.
==Средства нормализации==
Для приведения базы данных в нормальную форму будет применяться декомпозиция без потерь. При построении такой декомпозиции используются операции соединения и проекции.
===Проекция===
{{Определение
'''Проекция''' отношения <tex>R</tex> на множество атрибутов <tex>X</tex>: <tex>\pi_X(R) =\{r \cap X|r\in R\}</tex> — это отношение удовлетворяющее свойствам:
* Его заголовок формируется из заголовка отношения <tex>R</tex> путем удаления всех атрибутов, не указанных в множестве <tex>X</tex>
* Тело состоит из всех кортежей <tex>{Х_1 :r_1 , X_2 :r_2, . . . , X_n :r_n }</tex>, таких что в отношении <tex>R</tex> присутствует кортеж со значением <tex>r_1</tex> атрибута <tex>X_1</tex>, <tex>r_2</tex> атрибута <tex>X_2</tex> и т.д.
}}
|id = natural join
|definition =
'''Естественное соединение''' (англ. ''natural join'') отношений <tex>P_1R_1</tex> и <tex>P_2R_2</tex>: <tex>P_1 R_1 P_2 R_2 = \{r_1 ∪ r_2 | r_1 ∈ P_1R_1, r_2 ∈ P_2 R_2 ∧ π_Y(r_1) = π_Y(r_2)\}</tex> — отношение с заголовком <tex>\{X, Y, Z\}</tex> и телом, состоящим из всех таких кортежей <tex>\{Х_i :х_i</tex>, <tex>Y_j :y_j</tex>, . . . , <tex>Z_k :z_k\}</tex>, что любой из этих кортежей присутствует и в отношении <tex>P_1R_1</tex>, со значением <tex>x_i</tex> атрибута <tex>Х_i</tex> и значением <tex>y_j</tex> атрибута <tex>Y_j</tex>, и в отношении <tex>P_2R_2</tex>, со значением <tex>y_i</tex> атрибута <tex>Y_i</tex> и значением <tex>z_k</tex> атрибута <tex>Z_k</tex>.
}}
* Можно понимать как соединение по совпадающим атрибутам
* Коммутативно: <tex>R_1 ⋈ R_2 = R_2 ⋈ R_1</tex>* Ассоциативно: <tex>(R_1 ⋈ R_2) ⋈ R_3 = R_1 ⋈ (R_2 ⋈ R_3)</tex>
[[Файл:Join.png]]
====Пример некорректной декомпозиции====
При обратном соединении полученных отношений исходное отношений не было восстановлено — появились записи, которых не было ⇒ декомпозиция некорректна.
{| class="wikitable"
|-
==Теорема Хита==
Теорема Хита утверждает, что если некоторая декомпозиция выполняется в соответствии с определенной ФЗфункциональной зависимостью, то она будет выполнена без потерь.
{{Теорема
|author=Хит
Для проекций кортежа <tex>r</tex> на <tex>XY</tex> и <tex>XZ</tex> выполняетя: <tex>π_{XY}(r) ∈ π_{XY}(R), π_{XZ}(r) ∈ π_{XZ}(R)</tex>.
Таким образомИз этого следует, что <tex>r</tex> - подмножество соединения проекций <tex>⇒ ∀ r∈R: r ∈ \pi_{XY}(R)</tex>⋈<tex>\pi_{XZ}(R)</tex>.
2. Докажем, что любой кортеж полученного соединения является кортежем отношения <tex>R</tex>.
Поскольку <tex>X → Y</tex>, существует единственный <tex>y: (x, y) ∈ π_{XY}(R) ⇒ y = y' ⇒ (x, y, z) ∈ R</tex>
}}
 
Доказательсто первого пункта не опирается на наличие функциональной зависимости ⇒ справедливо следствие:
 
'''Следствие''' Исходное отношение <tex>R</tex> всегда является подмножеством соединения отношений, полученных при декомпозиции.
==См. также==
111
правок

Навигация