Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

inf

.pdf
Скачиваний:
7
Добавлен:
18.05.2015
Размер:
378.75 Кб
Скачать

2.2. Реляционная алгебра

11

1)hH; Bi = hH1; B1i hH2; B2i.

2)H1 è H2 не имеют общих им¼н атрибутов.

3)H := H1 [ H2, B := fs [ tj s 2 B1; t 2 B2g.

Проекция (), .

1)hH1; B1i = hH; Bi(a1; : : : ; am) = a1;:::;am(hH; Bi).

2)a1; : : : ; am имена некоторых атрибутов из заголовка H.

3)H1 := fha1; D1i; : : : ; ham; Dmig H, B1 := fs 2 T (H1)j 9t(s [ t 2 B)g. Следует отметить, что некоторые авторы для обозначения проекции используют фигурные или прямоугольные скобки: Rfa1; : : : ; amg èëè R[a1; : : : ; am].

Переименование [], .

1)hH1; B1i = a1=a(hH; Bi) = hH; Bi[a1=a].

2)a1 не является именем никакого атрибута из заголовка H.

3)Если a не является именем атрибута в H, то H1 := H è B1 := B.

Пусть a является именем некоторого атрибута ha; Di в H. Тогда H1 := (H n fha; Dig) [ fha1; Dig, B1 := ft[a1=a]j t 2 Bg, ãäå t[a1=a] := (t nfha; t(a)ig) [fha1; t(a)ig. Иными словами, переименование состоит в том, что имя a заменяется на новое имя a1 как в зоголовке, так и во всех кортежах отношения.

Выбор (или ограничение) .

Пусть hH; Bi отношение, ha1; D1i; ha2; D2i 2 H атрибуты (необязательно различныe). Атомарным условием выбора (или просто атомом) называется логическая формула вида a1P a2 èëè a1P v, где v константа, P допустимый бинарный предикат между элементами доменов D1 è D2 или соответственно между элементами домена D1 и константой v. Обычно в качестве допустимых предикатов берутся операции сравнения f<; ; =; ; >g. Их

семантика может зависеть от вида доменов: например, на числовых доменах это обычные операции сравнения чисел, на строковых доменах сравнения по лексикографическому порядку и т.д. Условие выбора определяется по индукции:

База: Любой атом является условием выбора.

Шаг: Если и условия выбора, то ^ , ^ - условия выбора; если условие выбора, то : условие выбора.

Иными словами, условие выбора это некая бескванторная формула логики предикатов, где в качестве предметных переменных фигурируют имена атрибутов, а предикатными символами являются символы допустимых операций сравнения. Условие выбора мож-

но применить к любому кортежу t 2 B. А именно, через (t) обозначим высказывание, которое получается из подстановкой конкретного значения a(t) вместо каждого имени атрибута a, входящего в .

1)hH1; B1i = (hH; Bi).

2)допустимое условие выбора.

3)H1 := H, B1 = ft 2 Bj (t) истинно в Bg.

2.2.2Другие операции

(Естественное) соединение (джойн) ./.

1)hH; Bi = hH1; B1i ./ hH2; B2i:

2)Атрибуты в H1 è H2 с одинаковыми именами совпадают (то есть одинаковым именам

12

Глава 2. Реляционная модель данных и реляционная алгебра

соответствуют одинаковые домены).

3) H := H1 [H2, B := fs[tj s 2 B1 ^t 2 B2 ^8a 2 N(H)((ha; v1i 2 s^ha; v2i 2 t) ) v1 = v2)g. Иными словами, B состоит из объединений кортежей из B1 è B2, у которых совпадают значения общих атрибутов.

Соединение отношений R = hH1; B1i è S = hH2; B2i можно выразить с помощью простейших реляционных операций следующим образом. Пусть a1; : : : ; an имена атрибутов èç H1 \ H2, b1; : : : ; bk имена атрибутов из H1 n H2, c1; : : : ; cl имена атрибутов из H2 n H1. Пусть, кроме того, x1; : : : ; xn произвольные имена, которые не встречаются среди имен атрибутов в R и S. Вначале переименуем общие атрибуты в S:

T := S[x1=a1; : : : ; xn=an] = S[x1=a1] [xn=an]:

Далее, возьмем композицию декартова произведения и ограничения:

P := (R T ); ãäå := (a1 = x1 ^ ^ an = xn):

Оста¼тся взять проекцию, чтобы избавиться от лишних переименованных атрибутов:

R ./ S := P (a1; : : : ; an; b1; : : : ; bk; c1; : : : ; cl):

Глава 3

Нормализация баз данных

3.1Функциональные зависимости и декомпозиция

3.1.1Функциональные зависимости

Пусть H фиксированная схема (заголовок), X; Y H произвольные наборы атрибутов из H. Упорядоченную пару hX; Y i назов¼м функциональной зависимостью (или просто зависимостью) и обозначим е¼ X ! Y .

Определение 3.1 Пусть R = hH; Bi произвольное отношение. Говорят, что в R набор атрибутов Y функционально зависит от набора атрибутов X, или R удовлетворяет зависимости X ! Y , обозначение R j= X ! Y , если

8t1; t2 2 B(t1(X) = t2(X) ) t1(Y ) = t2(Y )):

Иными словами, R j= X ! Y , если в отношении R набор значений атрибутов из X однозначно определяет набор значений атрибутов из Y . Если R известно из контекста, то вместо R j= X ! Y пишут просто X ! Y .

Функциональные зависимости являются одной из разновидностей ограничения целостности для базы данных. Они отражают реальные зависимости, свойственные предметной области.

Понятие суперкюча и ключа могут быть строго определены с помощью функциональной зависимости. Супеключ это набор атрибутов X H такой, что X ! H. Говорят,

что Y зависит от X функционально полно, если Y функционально зависит от X, но не зависит ни от какого собственного подмножества X:

X ! Y ^ (X0 X ) X0 6!Y ):

(Потенциальым) ключом называется минимальный суперключ, т.е. X ключ тогда и только тогда, когда весь заголовок H функционально полно зависит от X.

Декомпозицией отношения R = hH; Bi на наборы атрибутов X1; : : : ; Xn называется его замена на набор проекций R(X1); : : : ; R(Xn), ãäå X1 [ [ Xn = H.

14 Глава 3. Нормализация баз данных

Лемма 3.2 (Лемма о декомпозиции) Пусть R отношение с заголовком H = X1 [

[ Xn. Тогда

R R(X1) ./ ./ R(Xn):

Доказательство. Заметим прежде всего, что соединение R(X1) ./ ./ R(Xn) определено, так как X1; : : : ; Xn H. Пусть R = hH; Bi, R(X1) ./ ./ R(Xn) = hH1; B1i. По определениям операций соединения и проекции H1 = X1 [ [Xn = H. Пусть t 2 B произвольный кортеж отношения R. Тогда t = t(H) = t(X1 [ [ Xn) = t(X1) [ [ t(Xn) 2 B1. Òåì самым B B1 и лемма доказана.

Декомпозиция без потерь это такая декомпозиция отношения R, при которой естественное соединение проекций совпадает с самим R:

R = R(X1) ./ ./ R(Xn):

При декомпозиции с потерями естественное соединение не совпадает с R, то есть по лемме о декомпозиции строго включает R:

R R(X1) ./ ./ R(Xn):

Интуитивный смысл леммы о декомпозиции: при любой декомпозиции объ¼м информации, содержащейся в исходном отношении, не уменьшается. Если включение строгое,

то при декомпозиции добавляются кортежи, которые могут содержать некую лишнюю , ложную информацию (не соответствующая предметной области). В этом случае говорят о потере информации, видимо подразумевая при этом потерю истинной информации

среди ложной .

Сформулируем простое достаточное условие декомпозиции без потерь:

Теорема 3.3 (Теорема Хита (I.J. Heath)) Пусть R произвольное отношение с заголовком H = X [ Y [ Z и R j= X ! Y . Тогда R = R(X [ Y ) ./ R(X [ Z).

Доказательство. Обозначим R = hH; Bi, R(X [ Y ) ./ R(X [ Z) = hH1; B1i. По лемме о декомпозиции H = H1 è B B1. Докажем обратное включение B1 B. Предположим, что t 2 B1. Тогда по определению операций соединения и проекции t = t1(X [Y )[t2(X [Z) для некоторых t1; t2 2 B, ïðè÷¼ì t1((X [ Y ) \ (X [ Z)) = t2((X [ Y ) \ (X [ Z)), ò.å. t1 è t2 принимают одинаковые значения на одинаковых атрибутах. Так как (X [Y )\(X [Z) X, то t1(X) = t2(X). Но по определению функциональной зависимости X ! Y это означает, что t1(Y ) = t2(Y ), а значит t1(X [Y ) = t2(X [Y ). Следовательно, t = t2(X [Y )[t2(X [Z) = t2(X [ Y [ Z) = t2(H) = t2 2 B. Тем самым доказано включение B1 B, а значит и равенство B = B1.

3.1.2Исчисление зависимостей

Пусть H схема, F 2H 2H множество функциональных зависимостей, f 2 2H 2Hпроизвольная функциональная зависимость. Говорят, что f логически следует из F , обозначение F j= f, если для любого отношения R с заголовком H из R j= F следует R j= f.

3.1. Функциональные зависимости и декомпозиция

15

Через F обозначим множество всех функциональных зависимостей, которые логически следуют из F .

Пусть A множество аксиом и/или правил вывода одних функциональных зависимостей из других. Говорят, что f выводимо из F посредством A, или f A-выводимо из F ,

обозначение F `A f, если f может быть получена (многократным) применением аксиом и правил из A к функциональным зависимостям из F . Через FA обозначим множество всех функциональных зависимостей, которые A-выводимы из F .

Множество аксиом и/или правил вывода A назов¼м полным, если F = FA. Простой полный набор правил вывода был предложен В.В. Армстронгом (1974); эти правила вывода обычно называют аксиомами Армстронга (точнее говоря, аксиомой является только первое правило):

1.Рефлексивность: если Y X, то X ! Y .

2.Добавление: если X ! Y , то X [ Z ! Y [ Z для любого Z.

3.Транзитивность: если X ! Y и Y ! Z, то X ! Z.

Функциональная зависимость X ! Y , при которой Y X, называется тривиальной.

3.1.3Многозначные функциональные зависимости

Пусть R = hH; Bi произвольное отношение со схемой (заголовком) H, X; Y H произвольные наборы атрибутов из H.

Определение 3.4 Говорят, что в R набор атрибутов Y многозначно (функционально) зависит от набора X, обозначение R j= X Y или просто X Y , если

8t1; t2 2 B(t1(X) = t2(X) ) 9s 2 B (s(X [ Y ) = t1(X [ Y )^

s(H n (X [ Y )) = t2(H n (X [ Y )):

Переформулировка:

8x 2 R(X)8y1; y2 2 R(Y )8z1; z2 2 R(H n (X [ Y ))

(x [ y1 [ z1; x [ y2 [ z2 2 B ! x [ y1 [ z2; x [ y2 [ z1 2 B):

Иными словами, Y многозначно зависит от X, если у любых двух кортежей из R с одинаковыми значениями атрибутов набора X можно менять хвосты наборы значений всех атрибутов, кроме атрибутов из наборов X и Y .

Для x 2 R(X) и z 2 R(H n (X [ Y )), обозначим через Rxz(Y ) множество кортежей y 2 R(Y ) таких, что x [ y [ z 2 R. Целесообразно привести ещ¼ одну эквивалентную переформулировку многозначной зависимости:

Лемма 3.5 (Первоначальное определение Фейджина) X Y тогда и только тогда, когда 8x 2 R(X)8z1; z2 2 R(H n (X [ Y ))Rxz1 (Y ) = Rxz2 (Y ):

16 Глава 3. Нормализация баз данных

Иными словами, Y многозначно зависит от X, если Rxz(Y ) не зависит от z, т.е. R(Y ) не зависит от значений атрибутов, не входящих в X [ Y . В этом случае говорят, что наборы атрибутов Y и H n (X [ Y ) независимы или ортогональны .

Понятие многозначной зависимости обладает замечательным свойством: с помощью него можно сформулировать обобщение теоремы Хита необходимое и достаточное условие декомпозиции без потерь:

Теорема 3.6 (Теорема Фейджина) Пусть R произвольное отношение с заголовком H = X [ Y [ Z, где Y \ Z X. Тогда R j= X Y если и только если R = R(X [ Y ) ./ R(X [ Z).

Доказательство. Докажем достаточность, пусть R j= X Y . Обозначим R = hH; Bi, R(X [ Y ) ./ R(X [ Z) = hH1; B1i. По лемме о декомпозиции H = H1 è B B1. Докажем обратное включение B1 B. Предположим, что t 2 B1. Тогда по определению операций соединения и проекции t = t1(X [Y )[t2(X [Z) = t1(X [Y )[t2(H n(X [Y )) для некоторых t1; t2 2 B, ïðè÷¼ì t1((X [ Y ) \ (X [ Z)) = t2((X [ Y ) \ (X [ Z)), ò.å. t1 è t2 принимают одинаковые значения на одинаковых атрибутах. Так как (X [Y ) \(X [Z) = X, то t1(X) = t2(X). Но по определению многозначной зависимости X Y существует кортеж s 2 B такой, что s(X [ Y ) = t1(X [ Y ) è s(H n (X [ Y )) = t2(H n (X [ Y )). Следовательно, t = s(X [ Y ) [ s(H n (X [ Y )) = s(H) = s 2 B. Тем самым доказано включение B1 B, а значит и равенство B = B1.

Докажем теперь необходимость, пусть R = R(X [ Y ) ./ R(X [ Z). Рассмотрим произвольные t1; t2 2 B такие, что t1(X) = t2(X). Òàê êàê (X [ Y ) \ (X [ Z) = X, òî s := t1(X [Y ) [t2(X [Z) 2 R(X [Y ) ./ R(X [Z) = R, а значит s 2 B. Осталось заметить, что s удовлетворяет логическому условию из определения многозначной зависимости.

Предложение 3.7 (Свойства многозначной зависимости) Пусть R(H) фиксированное отношение, X; Y H.

(i)Åñëè X ! Y , òî X Y .

(ii)Если X [Y [Z = H и Y \Z X, то X Y тогда и только тогда, когда X Z.

(iii)Åñëè X [ Y = H, òî X Y .

(iv)Åñëè X Y è X Z, òî X Y [ Z, X Y \ Z è X Y n Z.

Доказательство. (i) Пусть X ! Y . Тогда по теореме Хита R = R(X [Y ) ./ R(X [(H nY )). Отсюда по теореме Фейджина X Y .

(ii)Заметим, что в теореме Фейджина Y и Z равнозначны. Поэтому для доказательства достаточно двукратно применить эту теорему.

(iii)следует из (ii), так как X ! ?, а потому X ?.

(iv)Рутинная проверка по определению многозначной зависимости.

Пункт (i) предыдущей леммы показывает, что функциональная сводимость частный случай многозначной сводимости.

Если Y X или X [ Y = H, то многозначная зависимость X Y называется тривиальной.

3.2. Нормальные формы

17

3.2Нормальные формы

Нормализация это процесс поэтапного улучшения реляционной базы данных, суть

которого состоит в декомпозиции отношений базы без потерь, то есть в разбиении отношений на проекции по разным наборам атрибутов, естественные соединения которых совпадают с самими отношениями. Нормализация приводит к исключению из базы данных определ¼нных нежелательных функциональных зависимостей, за сч¼т чего база данных становится более над¼жной и управляемой. Тем не менее, нормализация приводит к росту количества отношений в базе данных, а значит к снижению эффективности работы с ней, так как возрастает время выполнения сложных запросов. Поэтому наряду с норма-

лизацией иногда целесообразна денормализация сознательный отказ от декомпозиции

отношений или даже их укрупнение ради роста эффективности работы с базой данных.

3.2.1Простейшие нормальные формы

Понятие о первой нормальной форме (1NF) исторически сложилось как набор требований к таблице, при выполнении которых она соответствует некоторому отношению. Например, в каждой клетке таблицы должно быть только одно значение соответствующего домена.

По определению, всякое отношение уже находится в 1NF.

Атрибут называется ключевым, если он входит в некоторый (потенциальный) ключ; иначе атрибут называется неключевым.

Определение 3.8 Отношение находится во второй нормальной форме (2NF), если в н¼м каждый неключевой атрибут функционально полно зависит от каждого ключа.

Говорят, что набор атрибутов Y транзитивно зависит от набора X, если

9Z H(X ! Z ^ Z ! Y ^ Z 6!X ^ ^Y 6 Z):

Определение 3.9 Отношение находится в третьей нормальной форме (3NF), если в н¼м нет транзитивных зависимостей неключевых атрибутов от ключей.

Заметим, что по этому определению 3NF 2NF. Действительно, пусть отношение R находится в 3NF, но не находится в 2NF. Тогда некоторый неключевой атрибут A функционально неполно зависит от некоторого ключа K, т.е. существует K0 K такой, что K0 ! fAg. Тогда получаем транзитивную зависимость неключевого атрибута от ключа: K ! K0 ! fAg (K0 6!K, так как в противном случае условие минимальности не выполнено для ключа K).

Лемма 3.10 (Заниоло) Отношение находится в 3NF тогда и только тогда, когда для любой функциональной зависимости X ! Y выполнено хотя бы одно из условий: (i)

Y X, (ii) X суперключ, (iii) Y n X состоит из ключевых атрибутов.

Доказательство. Докажем необходимость, пусть отношение R находится в 3NF и пусть X ! Y такая функциональная зависимость, что Y 6 X и X не является суперключом. Расммотрим произвольный атрибут A 2 Y nX. Предположим, что A неключевой, и пусть

удовлетворяет зависимости соединения

18

Глава 3. Нормализация баз данных

K ключ такой, что A 62K. Тогда получаем транзитивную зависимость K ! X ! fAg, противоречие.

(ii) Докажем достаточность. Пусть отношение не находится в 3NF, тогда в нем существует транзитивная зависимость неключевого атрибута A от ключа K: K ! X ! fAg,

причем X 6!K и fAg 6 X. Полагая Y = fAg, получаем, что условия (i) и (iii) для функциональной зависимости X ! Y не выполнены. Так как X 6!K, то X не суперключ, т.е. не выполнено и условие (ii).

2NF и 3NF были предложены Э.Ф. Коддом в 1971 г.

Определение 3.11 Отношение находится в нормальной форме Бойса-Кодда (BCNF или 3,5NF), если из любой нетривиальной зависимости X ! Y следует, что X является

суперключом.

Включение BCNF 3NF следует из леммы Заниоло заметим, что отношение находится

в BCNF тогда и только тогда, когда для любой функциональной зависимости выполняется условие (i) или (ii) из этой леммы.

В большинстве практических задач для исключения аномалий достаточно приведения всех отношений в БД к 3NF или BCNF.

3.2.2Нормальные формы высших порядков

Определение 3.12 Отношение находится в четв¼ртой нормальной форме (4NF), если из любой нетривиальной многозначной зависимости X ! Y следует, что X является

суперключом.

Так как любая функциональная зависимость частный случай многозначной зависимости, то 4NF BCNF.

Определение 3.13 Пусть R отношение с заголовком H, X1 [ [Xn = H. Отношение

(X1; : : : ; Xn), åñëè

R = R(X1) ./ ./ R(Xn)

.

Иными словами, R удовлетворяет (X1; : : : ; Xn), если декомпозиция по проекциям X1; : : : ; Xn происходит без потерь.

Зависимость соединения (X1; : : : ; Xn) называется тривиальной, если хотя бы один из наборов X1; ; Xn совпадает со всем заголовком H.

Определение 3.14 Отношение находится в пятой нормальной форме (5NF), или нормальной форме проекции-соединения (PJ/NF), если в любой нетривиальной зависимости соединения (X1; : : : ; Xn) каждый набор Xi является суперключом.

Глава 4

Язык запросов SQL

SQL (англ. Structured Query Language структурированный язык запросов ) универ-

сальный язык управления реляционными базами данных, наиболее распростран¼нный на сегодняшний день. Язык SQL, под первоначальным названием SEQUEL, был разработан Д.Д. Чемберленом и Р.Ф. Бойсом в начале 1970-х годов для реляционной базы данных IBM System R. Язык SQL был стандартизован несколько раз, первый стандарт вышел в 1986 году (SQL-86), новейший - в 2008 году (SQL:2008).

Язык SQL делится на следующие части (подъязыки):

DDL (Data De nition Language) язык определения данных;

DML (Data Manipulation Language) язык управления данными;

DCL (Data Control Language) язык определения доступа к данным;

TCL (Transaction Control Language) язык управления транзакциями.

4.1Определение данных

Операторы языка DDL:

CREATE созда¼т объект в базе данных;

ALTER изменяет структуру существующего объекта;

DRIOP удаляет объект.

4.2Управление данными

Операторы языка DDL:

SELECT осуществляет выборку данных, удовлетворяющих определ¼нным условиям;

20

INSERT добавляет новые данные;

UPDATE изменяет существующие данные;

DELETE удаляет данные;

TRUNCATE удаляет все строки в таблице;

MERGE добавляет и обновляет данные.

Глава 4. Язык запросов SQL

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]