2013-11-02 2 views

ответ

3

* следует более правильно записать ×, поскольку он представляет собой Cartesian product. Эта операция возвращает набор всех кортежей, которые являются конкатенацией кортежей из каждого операнда. Объединение фильтрует декартово произведение только на те кортежи с соответствующими значениями по указанным атрибутам. Если соединение является естественным соединением, как и в вашем примере, атрибуты, совпадающие с ними, это те, у которых одинаковые имена.

К примеру, учитывая следующие два соотношения R и S, как показано:

R (a, b, c)  S (b, c, d) 
    (1, 2, 3)  (2, 7, 9) 
    (2, 4, 6)  (5, 3, 4) 
    (3, 6, 9)  (2, 3, 6) 

Картезианская продукт R × S является:

(R.a, R.b, R.c, S.b, S.c, S.d) 
    (1, 2, 3, 2, 7, 9 ) 
    (1, 2, 3, 5, 3, 4 ) 
    (1, 2, 3, 2, 3, 6 ) 
    (2, 4, 6, 2, 7, 9 ) 
    (2, 4, 6, 5, 3, 4 ) 
    (2, 4, 6, 2, 3, 6 ) 
    (3, 6, 9, 2, 7, 9 ) 
    (3, 6, 9, 5, 3, 4 ) 
    (3, 6, 9, 2, 3, 6 ) 

естественное соединение R ⨝ S является продуктом фильтрации только кортежей где значения b и c:

(a, b, c, d) 
    (1, 2, 3, 6) 

Джойн R ⨝b S является продукт фильтруется только кортежей, где b значения соответствуют:

(R.a, b, R.c, S.c, S.d) 
    (1, 2, 3, 7, 9 ) 
    (1, 2, 3, 3, 6 ) 
+0

Книга «Основы систем баз данных» - 6-е издание использует знак умножения * в качестве альтернативного обозначения для естественного соединения на стр. 159 (6-е издание, ISBN 0136086209). – pln

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