BD-1st-2.4-lab4.tresc-1.1-Slajd5

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Iloczyn kartezjański

Iloczyn kartezjański


Najprostszym typem połączenia jest tzw. „iloczyn kartezjański” (albo cross-join ). W wyniku iloczynu kartezjańskiego powstaje relacja, która zawiera wszystkie atrybuty z obu relacji. Krotki w tej relacji powstają jako każda możliwa kombinacja krotki z pierwszej łączonej relacji, z krotką z drugiej łączonej relacji. Jak łatwo zauważyć, liczba krotek w relacji stanowiącej wynik połączenia poprzez iloczyn kartezjański jest równa iloczynowi rozmiarów oryginalnych relacji (o ile nie wprowadzi się dodatkowych warunków selekcji). Wobec olbrzymich rozmiarów, jakie potrafią przyjmować relacje w zastosowaniach praktycznych, w większości wypadków wystąpienie iloczynu kartezjańskiego sygnalizowane jest błędem w zapytaniu. Iloczyn kartezjański w czystej postaci rzadko bywa przydatny.

W języku SQL, według standardu ANSI, sposób połączenia dwóch lub więcej tabel definiowany jest w klauzuli FROM. Połączenie poprzez iloczyn kartezjański definiowane jest za pomocą operatora połączenia CROSS JOIN umieszczanego pomiędzy nazwami łączonych relacji:

SELECT......

FROM relacja1 CROSS JOIN relacja2

WHERE ....

ORDER BY .....

Przeanalizujmy przykład przedstawiony na slajdzie:

SELECT nazwisko, nazwa

FROM pracownicy CROSS JOIN zespoly;

Klauzula FROM zawiera połączenie, poprzez iloczyn kartezjański, dwóch relacji: PRACOWNICY i ZESPOLY. Zapytanie zatem przetwarza relację, która powstała w wyniku połączenia każdej krotki z relacji PRACOWNICY z każdą krotką z relacji ZESPOLY. Tutaj, przetwarzanie polega na projekcji, czyli wybraniu atrybutów NAZWISKO i NAZWA z relacji powstałej w wyniku połączenia i zwrócenie ich w relacji wynikowej.



<< Poprzedni slajd | Spis treści | Następny slajd >>