Всегда ли каноническая обложка уникальна для любых отношений?

Предположим, у меня есть следующие отношения

C -> B
CB -> AC
CAE -> FB
D -> E
CA -> B

Каноническая обложка в моей книге C -> AB, CE -> F, D -> E

Но каноническая обложка тоже может быть C - AB, D - EF? Можно ли иметь две разные канонические обложки для одних отношений?


person python    schedule 17.12.2015    source источник
comment
Каноническая обложка моей книги: C - ›AB, CE -› D, D - ›E Что случилось с F?   -  person Mike Sherrill 'Cat Recall'    schedule 17.12.2015


Ответы (2)


Но каноническая обложка тоже может быть C - AB, D - EF?

Нет, это не может быть каноническим прикрытием для вашего набора функциональных зависимостей (FD). Каноническая оболочка F - это «минимальный» набор функциональных зависимостей, эквивалентных F, не имеющий избыточных зависимостей или повторяющихся частей зависимостей.

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

С другой стороны, та, которая указана в вашей книге C -> AB, CE -> F, D -> E, является канонической обложкой и единственной возможной канонической обложкой для этого набора FD.

Можно ли иметь два разных канонических прикрытия для одних отношений?

Да, можем. Чтобы найти каноническую обложку, мы делаем -

  • Сначала убедитесь, что одноэлементный правый элемент (RHS)
  • Во-вторых, удалите лишний левый атрибут (LHS).
  • В-третьих: удалите любую избыточную функциональную зависимость.

У нас может быть разное каноническое покрытие для одних отношений из-за третьего шага выше. Я объясню это на примере.

Учитывая ФД как:

X→YZ
Y→XZ
Z→XY

Сначала убедитесь, что одноэлементный RHS. Итак, у нас есть:

  1. X→Y
  2. X→Z
  3. Y→X
  4. Y→Z
  5. Z→X
  6. Z→Y

Второй Никаких посторонних LHS. Уже доволен.

Третий Удалите все лишние FD. Теперь мы можем удалить (2), (3) и (6) как избыточные зависимости и установить минимальное покрытие следующим образом:

1:

X→Y,
Y→Z,
Z→X

или мы можем удалить (1), (4) и (5) как избыточные зависимости и установить минимальное покрытие как:

2:

Z→Y,
Y→X,
X→Z

Следовательно, в этом случае у нас есть два канонических покрытия для одного и того же отношения.

person Karup    schedule 18.12.2015
comment
Спасибо @PuRaK, ваш ответ очень полезен - person python; 18.12.2015
comment
Также посмотрите это видео (youtube.com/watch?v=Q8j4lYeVIek). Красиво объяснил, как найти каноническую обложку - person python; 22.12.2015
comment
@Karup может у нас канонические обложки разного размера? - person taurus05; 19.06.2021

Да, набор функциональных зависимостей (не отношения) может иметь несколько канонических покрытий. Дэйт дает пошаговый вывод в ответе на упражнение 10.12 в Введение в системы баз данных, 7-е изд., Стр. 346f.

В Date не используется термин каноническая обложка. Он более или менее использует несократимое покрытие.

person Mike Sherrill 'Cat Recall'    schedule 17.12.2015
comment
Тогда у нас будет и другое покрытие BCNF? - person python; 17.12.2015