2013-11-02 1 views
1

Изображение внизу показывает небольшую базу данных, enter image description hereМогу ли я присоединиться к 3-м столам, используя Natural Join?

Я получил вопрос

Подари реляционную выражение алгебры, чтобы найти имя судьи, который председательствует на суде для ответчика, известного как « Майк ", начиная с 1.12.2012.

И ответ дается в

enter image description here


Но я думаю, что он должен присоединиться JUDGE таблицы, а что-то вроде этого:

Пожалуйста оставить некоторые комментарии, если я»неправ это

enter image description here

ответ

1

Нет, вам не нужно входить в таблицу JUDGE, чтобы получить имя судьи.

Уведомление о том, что Jname является основным ключом JUDGE s, то есть судья однозначно идентифицирует свое имя; и TRIAL таблица будет фактически содержать Jname Обозначая которые судья председательствовал на данном испытании:.

Judge | Defendant | Number | Sdate 
Dredd | 1  | 1 | 1.12.2012 
Dredd | 2  | 2 | 2.12.2012 
Rico | 1  | 3 | 1.12.2012 

Вы можете увидеть, как выбрать кортежи дает нам имя судьи, не вступая ничего (в случае, если вам интересно, это . очень плохой дизайн, который вы никогда не должны использовать в реальном мире)

в отличие от этого, мы должны присоединиться к DEFENDANT с TRIAL: первичный ключ на DEFENDANT «s его ID, так только то, что ID появляется в TRIAL таблице , поэтому, если нам нужно выбрать подсудимого по имени, мы должны использовать соединение.

Что касается вашего вопроса: да, вы можете, конечно, присоединиться к более чем трем таблицам. Если вам трудно представить, вспомните, что R ⨝ S ⨝ T = (R ⨝ S) ⨝ T. Обратите внимание, что естественное соединение хорошо коммутативно и ассоциативно.