Złączanie jest to operacja która umożliwia wyszukiwanie i operowanie danymi, które pochodzą z więcej niż jednej tabeli, przy pomocy pojedynczej instrukcji SELECT. Do wykonania operacji złączenia określa się za pomocą klauzuli WHERE oraz instrukcji SELECT. Każde złączenie realizowane jest jednocześnie dla dwóch tabel, przy tym dla każdej tabeli wybierana jest jedna kolumna łącząca lub kolumna złączeniowa. Kolumna łącząca powinna zawierać wartości które w łatwy sposób możemy porównać, reprezentujące te same dane lub dane o podobnym charakterze w każdej tabeli biorącej udział w złączeniu. Przeważnie kolumny łączące zawierają ten sam typ danych. Wartości kolumn łączących są złączeniowo zgodne czyli ich wartości zawarte są w tej samej klasie danych.

Składnia złączenia:

SELECT lista wyboru

FROM tabela1 , tabela2…

where [tabela1.]kolumna operator złączenia [tabela2.]kolumna

Na liście tabel klauzuli WHERE muszą znajdować się co najmniej dwie tabele , a kolumny zawarte w klauzuli WHERE muszą być złączeniowo zgodne. Jeżeli kolumny złączeniowe maja takie same nazwy, to koniecznie musimy określić te kolumny, podając na liście wyboru oraz w klauzuli WHERE nazwy tabel, z których te kolumny pochodzą.

SELECT id_klienta, marka, model

FROM zamowienie, samochody

WHERE zamowienie.nr_rejestracyjny = samochody.nr_rejestracyjny

Wynik:

select-zlaczenie

To złączenie przedstawia identyfikatory klientów oraz samochody jakie wypożyczyli. Dokonaliśmy złączenia na pomocą kolumny nr_rejestracyjny występującej zarówno w tabeli zamówienie jak i  samochody .

W bazie danych która została zaprojektowana zgodnie z regułami normalizacji najczęściej zdarza się, że jedna tabela nie zawiera całej potrzebnej informacji o konkretnej encji. Do pełnej analizy danych potrzebujemy wtedy wyszukać danych z kilku tabel. Model relacyjny docelowo zakłada podział danych na wiele jednotematycznych tabel tworzonych zgodnie z regułami normalizacji co ma na celu wykonywanie zapytań ad hoc i tworzenie pełnych raportów. W modelu relacyjnym operacja złączenia jest jedną z ważniejszych operacji.

Złączenia są możliwe w systemach zarządzania relacyjna bazą danych, ponieważ model relacyjny zapewnia niezależność danych i umożliwia tworzenie dla poszczególnych danych szczegółowych tabel nowych i nieprzewidzianych wcześniej związków. Związki, jakie zachodzą między danymi stają się widoczne kiedy zadajemy sobie konkretne pytania do bazy, nie kiedy ją tworzymy.

Nie ma więc wcześniejszej potrzeby zastanawiania się czy dane będą złączane. Możemy tworzyć nowe związki podczas pracy z danymi, po prostu je łącząc.

Złączenie w szczególności przydają nam się podczas analizy danych rozproszonych po bazie danych kiedy dana informacja jest podzielona na poszczególne encje. Wówczas pełna analizę danych możemy uzyskać przez powtórne złączenie tabel. Na tym właśnie polega istota złączenia.

W wyniku złączenia powstaje nieograniczona elastyczność w dodawaniu rodzajów danych do naszej bazy danych. W każdym momencie możemy stworzyć nową tabelę, w której będą zawarte dane na dany temat. A potem powiązać ją z już istniejącymi tabelami za pomocą złączenia.

W taki sposób możemy rozwijać naszą bazę danych, jeśli uznamy że nasza tabela jest za duża możemy ją podzielić potem w razie potrzeby odtworzyć, wykorzystując operacje złączenia.

Warunki złączenia

W składni instrukcji SELECT warunki złączenia to:

  • wpisanie w liście FROM więcej niż jedna tabelę,
  • wpisanie w klauzuli WHERE warunków umożliwiających utworzenie złączenia za pomocą kolumn złączenia.

Do sformułowania połączenia miedzy kolumnami złączającymi możemy stosować dowolne operatory relacyjne, najczęściej używany to operator równości, wtedy kiedy wartość w kolumnie łączącej pochodzącej z jednej tabeli jest równa wartości w kolumnie pochodzącej z innej tabeli.

Złączenie przeważnie oparte jest na równości lub zgodności  łączonych kolumn.

Teoria mówi, że złączenie jest rzutowaniem oraz ograniczeniem iloczynu. Iloczyn lub iloczyn kartezjański są zbiorem wszystkich możliwych rekordów z dwóch tabel.

Przy wykonywaniu złączenia w pierwszej kolejności system sprawdza wszystkie możliwe kombinacje wierszy z dwóch tabel, a potem są eliminowane wszystkie wiersze nie spełniające warunków rzutowania oraz ograniczenia.

W idealnym przypadku złączenia kolumną łączącą jest kolumna kluczowa tabeli, która jest kluczem głównym bądź kluczem obcym. Jeżeli mamy do czynienia z kluczem złożonym, to możemy dokonać złączenia na podstawie wszystkich kolumn klucza.

Klucz główny jest logicznym łącznikiem wszystkich związanych z min kolumn klucza obcego w innych tabelach, dlatego kolumny kluczowe są najlepszym rozwiązaniem aby za jego pomocą utworzyć konstrukcje złączenia. Takie złączenia zazwyczaj są użyteczne oraz poprawne logicznie. Złączenie klucz główny klucz obcy, opierają się na oczekiwaniu, że klucze obce zgodzą się z odpowiadającymi im kluczami głównymi, aby zachować spójność odwołać w bazie danych.

Jeżeli chcemy aby złączenie dawało nam stosowne wyniki, powinniśmy porównywać kolumny o podobnych wartościach, najlepiej pochodzące z tej samej klasy danych. Wybierane kolumny muszą mieć taki sam lub podobny typ danych lub typ danych oraz takie same lub podobne wartości. Musimy też zachować logikę w łączeniu kolumn, ponieważ możemy połączyć takie dane jak numer telefonu klienta z mocą samochodu lecz wynik nie będzie miał sensu.

Łączone przez nas kolumny nie muszą posiadać takich samych nazw, lecz często tak się zdarza. Natomiast typy łączonych ze sobą kolumn muszą być zgodne, czyli takie aby system mógł łatwo konwertować jedno w drugie. Taka konwersja pozwala na złączenie kolumn typu intiger z kolumnami typu float lub kolumn typu character z kolumnami typu date.

Podczas operacji złączenia system porównuje dane w określonych miejscach i generuje wyniki porównania jako tabelę zakwalifikowanych wierszy.

Wyniki ukazują wiersz każdego poprawnie wykonanego złączenia. W miarę potrzeb dane z każdej tabeli są powielane. Powtarzanie danych ma na celu wyrównanie wyglądu wyświetlanej tabeli. Wyniki są dla każdego zapytania wyświetlane bez jakiejkolwiek ingerencji w tabele bazy danych. Operacja złączenia pozwala wyszukiwać dane z wielu tabel tak, jakby były one zgromadzone w jednej tabeli.

Aby wykonać poprawne złączenie, nie musimy dwukrotnie podawać nazwy kolumny łączącej na liście wyboru a nawet umieszczać jej w wyniku. Możemy mieć jednak konieczność podania nazwy kolumny łączącej waz z nazwą jej tabeli w liście wyboru lub specyfikacji złączenia w klauzuli WHERE.

Aliasy

Aby uprościć pisanie oraz czytelność zapytań złączających możemy tabelom na liście tabel nadawać nazwy zastępcze. Przypisanie aliasu każdej nazwie tabeli, jest bardzo pomocne kiedy łączymy tabele o takich samych nazwach, kiedy używamy ich razem z nazwą tabeli tyle razy, ile razy są używane. Aliasem może być dowolna kombinacja liter lub cyfr. Najlepiej aby były one krótkie i łatwe do zapamiętania, wtedy zaoszczędzi nam to pisania.

SELECT id_klienta, marka, model

 FROM zamówienie z, samochody s

WHERE z.nr_rejestracyjny = s.nr_rejestracyjny

Dodaj komentarz