База данных состоит из множества атрибутов и ключей. С точки зрения теоретико-множественного описания реляционной базой данных d называется такая совокупность отношений {R1, R2, ...,Rp}, в которой каждое отношение имеет вид Ri= (Si,Ki), где Si- множество атрибутов, а Ki - множество атрибутов образующих ключ.
Предположим на входе задано множество F- зависимостей F над R. С их помощью требуется создать базу данных R=( R1, R2, ...,Rp). Эта БД должна удовлетворять следующим требованиям:
1.
множество F полностью характеризуется с помощью R , т.е.
где К – выделенный ключ Ri}
2. Каждое отношение Ri находится в третьей нормальной форме.
3. Не существует базы данных с меньшим числом отношений, удовлетворяющим пунктам 1 и 2.
4. Соединение всех полученных отношений Ri дает исходное отношение R.
Алгоритм порождающий базу данных из заданных F-зависимостей называется алгоритмом синтеза.
Определение. Если R – база данных и на ней задано множество F-зависимостей G, то в ней существует по крайней мере |EG| отношений. Это означает, что в R столько же отношений, сколько и классов эквивалентности. Из этого следует следующее.
Пусть F - множество F – зависимостей. Любая база данных должна иметь |EF’| отношений, где F’ неизбыточное покрытие для F.
Исходя из этого строится способ построения структуры базы данных.
Сначала находится неизбыточное покрытиеF’ для F и в EF’ вычисляем классы эквивалентности. Для каждого EF’(X) строим отношение, состоящее из всех атрибутов, появляющихся в EF’(X). При этом атрибуты левой части каждого класса эквивалентности образуют выделенный ключ.
Реализация этого способа позволяет получить алгоритм SYNTHESIZE
Вход: множество F – зависимостей F над R.
Выход: полная схема баз данных для F.
1. Наити для F редуцированное минимальное покрытие G.
2. Для каждой CF – зависимости (X1,X2,…,Xk) Y из G построить отношение Rj= X1X2…XkY с выделенными ключами K={X1,X2,…Xk).
3. Вернуться к п. 2.
Пример.
A B1B2C1C2DEI1I2I3J
B1B2C1 AC2DEI1I2I3J
B1B2C2 AC1DEI1I2I3J
E I1I2I3
C1D J C2D J
I1I2 I3 I2I2 I1 I1I3 I2
И пусть R= AB1B2C1C2DEI1I2I3J
Множество минимально, но не редуцировано. Редуцируя F , получим
F’= {A B1B2C1C2DE E I1I2
B1B2C1 A B1B2C2 A
C1D J C2D J
I1I2 I3 I2I2 I1 I1I3 I2}
Образуя классы эквивалентности имеем
G={ (AB1B2C1 ,B1B2C2) DE
(E) I1I2
(C1D) J (C2D) J
(I1I2, I2I2, I1I3)}
Преобразуя каждую CF – в отношения с выделенными ключами, получим
R1=AB1B2C1C2DE K1= {AB1B2C1 ,B1B2C2}
R2= EI1I2 K2={E}
R3= C1DJ K3={C1D}
R4= C2DJ K4={C2D}
R5= I1I2I3 K5={ I1I2, I2I2, I1I3}
Окончательная схема БД будет R=( R1, R2, R3, R4 ,R5)