Любая R
реляционная схема* может быть разложена на несколько отношений в форме 3NF при любом наборе зависимостей от R
.
Если у вас есть следующее G
минимальное покрытие:
G = { X1 -> A1, X2 -> A2, ..., Xn ->An}
Правильная 3NF, без потерь, декомпозиция с сохранением зависимостей может быть следующей:
r = {X1A1, X2A2, ..., XnAn} U {K}
, где K
— ключ отношения R
.
Декомпозиция r
сохраняет исходные зависимости, поскольку каждая зависимость, спроецированная на разложенные части, дает вам одну из исходного набора зависимостей в наборе G
.
Разложение r
также приводит к отношениям 3NF.
1; K
нужен только для декомпозиции без потерь. Если вам нужно только сохранение зависимостей, вам не нужно его добавлять.
2; При построении r
декомпозиции возможно, что некоторая Ri
часть r содержит ключ исходного R
отношения. На этот раз вам не нужно добавлять плюсовую схему с ключом, так как ключ уже включен в декомпозицию.
*: Должен быть как минимум в форме 1NF, чтобы атрибуты были атомарными.
Пример вашей схемы и набора зависимостей
Набор зависимостей:
BG->C, ABG->D, CF->A, A->C, A->G, AD->F, AD->E, AC->B
Набор возможных ключей:
A, CF, BFG
Разложение 3NF без потерь, сохраняющее зависимости:
BGC, ABGD, CFA, AC, AG, ADF, ADE, ACB
Как видите, ключ уже включен в декомпозицию, поэтому вам не нужно его добавлять.
person
Attila
schedule
26.12.2013