Базы данных: декомпозиция без потерь и естественное соединение

Вопрос, на который я отвечаю:

Рассмотрим R(A,B,C) с FD A -> B. Дайте vaild экземпляр r из R так, что когда мы проецируем r на отношения R1(A,B) и R2(B,C) и затем снова присоединяемся к R1 и R2, мы не получаем тот же экземпляр r.

Я не могу думать о ситуации, в которой это произойдет. Поскольку B зависит от A, и обе таблицы будут соединяться по значению B, не будет ли естественное соединение всегда одинаковым?

Ex.

r1 = (1, 4, 6)
r2 = (2, 6, 4)

R1:  A | B     R2:  B | C
    ---|---        ---|---
     1 | 4          4 | 6
     2 | 6          6 | 4

R:  A | B | C
   ---|---|---
    1 | 4 | 6
    2 | 6 | 4

1 ответ

Решение

Как указывает @ErwinSmout, первый пример неверен. Если я правильно понимаю, C не зависит ни от A, ни от B, поэтому данные r похожи:

r1 = (1,4,6)
r2 = (1,4,7)

 A | B | C
---|---|---
 1 | 4 | 6
 1 | 4 | 7
 1 | 4 | 6
 1 | 4 | 7

Мы получим удвоенные ряды после объединения. Также

множественный A может иметь один и тот же B, так что в результате вы получите неправильные значения.

r1 = (1,4,6)
r2 = (2,4,7)

 A | B | C
---|---|---
 1 | 4 | 6
 1 | 4 | 7
 2 | 4 | 6
 2 | 4 | 7
Другие вопросы по тегам