Изменения

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

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

7931 байт добавлено, 09:58, 22 декабря 2020
Новая страница: «{{Определение |id = normalization |definition = '''Нормализация''' — процесс преобразования отношений ре…»
{{Определение
|id = normalization
|definition =
'''Нормализация''' — процесс преобразования отношений реляционной базы данных к виду, отвечающему одной из [[Нормальные формы|нормальных форм]].
}}
Нормализацию целесообразно понимать следующим образом: она помогает спроектировать базу данных таким образом, чтобы сделать более логически приемлемыми операции обновления отдельных кортежей, что в противном случае (т.е. когда проект базы данных не нормализован) может оказаться затруднительным. Эта цель достигается благодаря тому, что в полностью нормализованном проекте предикаты переменных отношения имеют более простой вид.
__TOC__
===Цели===
* Исключение некоторых типов избыточности
* Устранение некоторых аномалий обновления
* Разработка проекта базы данных, который является достаточно "качественным" представлением реального мира, интуитивно понятен и может служить хорошей основой для последующего расширения
* Упрощение процедуры применения необходимых ограничений целостности
===Следствия===
Полная нормализация приводит к замедлению работы базы т.к. увеличивается количество логически независимых переменных отношения ⇒ увеличивается количество отдельно хранимых физических файлов, что в свою очередь приводит к появлению большего количества операций ввода-вывода, что и замедляет работу.
==Средства нормализации==
===Проекция===
{{Определение
|id = projection
|definition =
'''Проекция''' отношения R на множество атрибутов X: <tex>\pi_X(R) =\{r \cap X|r\in R\}</tex> — это отношение удовлетворяющее свойствам:
* Его заголовок формируется из заголовка отношения R путем удаления всех атрибутов, не указанных в множестве X
* Тело состоит из всех кортежей <tex>{Х_1 r_1 , X_2 r_2, . . . , X_n r_n }</tex>, таких что в отношении R присутствует кортеж со значением <tex>r_1</tex> атрибута <tex>X_1</tex>, <tex>r_2</tex> атрибута <tex>X_2</tex> и т.д.
}}

[[Файл:Projection.png]]
===Соединение===
Операция соединения имеет несколько разных вариантов, но чаще всего рассматривается ''естественное соединение''.
{{Определение
|id = join
|definition =
'''Соединение''' отношений <tex>P_1</tex> и <tex>P_2</tex>: <tex>P_1 ⋈ P_2 = \{r_1 ∪ r_2 | r_1 ∈ P_1, r_2 ∈ P_2 ∧ π_Y(r_1) = π_Y(r_2)\}</tex> — отношение с заголовком { X, Y, Z } и телом, состоящим из всех таких кортежей {<tex>Х_i х_i</tex>, <tex>Y_j y_j</tex>, . . . , <tex>Z_k z_k</tex>}, что любой из этих кортежей присутствует и в отношении <tex>P_1</tex>, со значением <tex>x_i</tex> атрибута <tex>Х_i</tex> и значением <tex>y_j</tex> атрибута <tex>Y_j</tex>, и в отношении <tex>P_2</tex>, со значением <tex>y_i</tex> атрибута <tex>Y_i</tex> и значением <tex>z_k</tex> атрибута <tex>Z_k</tex>.
}}
* Можно понимать как соединение по совпадающим атрибутам
* Коммутативно
* Ассоциативно

[[Файл:Join.png]]

===Декомпозиция===
Процедура нормализации предусматривает разбиение, или '''декомпозицию''', данной переменной отношения на другие переменные отношения, причем декомпозиция должна быть обратимой, т.е. выполняться без потерь информации, то есть, соединение отношений, полученных при декомпозиции множества, должно давать исходное отношение
Декомпозиция отношения R на множества атрибутов A и B: <tex>R(A, B) = \pi_A(R) ⋈ \pi_B(R)</tex>

[[Файл:Decomposition.png]]

====Пример правильной декомпозиции====
{| class="wikitable"
|-
|Проекции на CId Phone и Lecturer Phone
|Соединение CId Lecturer и Lecturer Phone
|-
|[[Файл: Decomposition Example 1 1.png|300px]]
|[[Файл: Decomposition Example 1 2.png|300px]]
|}


====Пример неправильной декомпозиции====
{| class="wikitable"
|-
|Проекции на CId Phone и Lecturer Phone
|Соединение CId Phone и Lecturer Phone
|-
|[[Файл: Decomposition Example 2 1.png|300px]]
|[[Файл: Decomposition Example 2 2.png|300px]]
|}

==Теорема Хита==
Теорема Хита утверждает, что если некоторая декомпозиция выполняется в соответствии с определенной ФЗ, то она будет выполнена без потерь.
{{Теорема
|author=Хит
|statement=
Пусть R(XYZ) является отношением, где X, Y и Z — неперескающиеся множества атрибутов. Если R удовлетворяет функциональной зависимости X → Y, то R равно соединению ее проекций по атрибутам X, Y и Y, Z: <tex>R=\pi_XY(R)⋈ \pi_XZ(R)</tex>
|proof=
<tex>\subset</tex>

<tex>∀ r ∈ R: π_{XY}(r) ∈ π_{XY}(R), π_{XZ}(r) ∈ π_{XZ}(R) ⇒ r ∈ π_{XY}(R) ⋈ π_{XZ}(R)</tex>

<tex>\supset</tex>

<tex>∀ (x, y, z) ∈ π_{XY}(R) ⋈ π_{XZ}(R) ⇒ (x, y) ∈ π_{XY}, (x, z) ∈ π_{XZ}(R)</tex>
<tex>Из (x, z) ∈ π_{XZ}(R) ⇒ ∃ y': (x, y', z) ∈ R ⇒ (x, y') ∈ π_{XY}(R)</tex>
<tex>X → Y ⇒ ∃! y : (x, y) ∈ π_{XY}(R) ⇒ y = y' ⇒ (x, y, z) ∈ R</tex>
}}
==См. также==
* [[Функциональные зависимости: замыкание, эквивалентность и правила вывода]]
* [[Нормальные формы: первая и вторая]]
* [[Нормальные формы: третья и Бойса-Кодда]]
* [[Многозначные зависимости и четвертая нормальная форма]]
* [[Зависимости соединения и пятая нормальная форма]]
== Источники информации ==
* [http://www.kgeorgiy.info/courses/dbms/lectures/normalization.html kgeorgiy.info Тема 4. Нормализация баз данных]
* ''Дейт К.'': Введение в системы баз данных (Глава 12)


[[Категория: Базы данных]]
111
правок

Навигация