Базы данных: декомпозиция без потерь и естественное соединение
Вопрос, на который я отвечаю:
Рассмотрим 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