2016-10-03 2 views
0

Таблица 1Реляционная алгебра: естественное соединение со значением NULL

Customer id city 
John  1 LA 
Nancy  2 NULL 

Таблица 2

Customer $ in the pocket 
John  20 
Nancy  30 

Я учусь реляционной алгебры.

Мне интересно, что произойдет, если Table 1естественное соединение с Table 2? Я предполагаю, что результатом будет 4 атрибута, и появятся и Джон, и Нэнси.

Но мой друг сказал мне, что появится только Джон, Нэнси не будет, потому что есть значение null.

Я так запутать

+1

joins происходит по двум атрибутам, и если вы присоединяетесь к клиенту (который будет по умолчанию), то ваш друг ошибается :) – bugwheels94

+0

Чтобы понять это, просто перепишите NATURAL JOIN как обычный INNER EQUIJOIN, используя те же правила, что и NATURAL JOIN использует. Учитывая отношения в вашем примере, это будет равнозначно атрибуту 'Customer'. (Значение NULL в атрибуте city не имеет значения, так как другое отношение не имеет атрибута с именем 'city'.) NATURAL JOIN будет использовать все атрибуты с одинаковым именем. Если второе отношение также имело атрибут с именем 'city', это будет то же самое, что и INNER EQUIJOIN как для атрибутов' Customer', так и 'city'. – spencer7593

+0

Для естественного соединения мы присоединяемся, только если мы сопоставили общий атрибут (в данном случае это поле Customer)? – randy

ответ

1

В приведенном выше случае, ваш друг не так, вы правы!

Давайте посмотрим случай, когда это было бы иначе:

Таблица 'Клиент'

Id Name AccNo 
1 John 44 
2 Nancy NULL 

Таблица 'Счет'

AccNo $_in_Pocket 
44  20 
45  30 

Здесьс естественным соединением, мы получим все атрибуты для Джона, но Нэнси будет отсутствовать из результатов.

+0

Вам не нужно отформатировать свой ответ с помощью тегов и сущностей HTML, вместо этого используйте правильное форматирование ответа Stackoverflow – bugwheels94

Смежные вопросы