Pracując z modelem relacyjnym, mamy 2 grupy operacji, których możemy użyć.
Pierwsza nazywa się algebrą relacyjną i jest to język proceduralny .
Na tym bazuje SQL i dlatego bardzo ważne jest, aby się nauczyć - ponieważ SQL jest de facto standardem pracy z relacyjnymi bazami danych.
Drugi nazywa się rachunkiem relacyjnym i zamiast być proceduralnym, jest językiem deklaratywnym . To podstawowa różnica w sposobie interakcji z bazami danych, ponieważ nie mówisz oprogramowaniu bazy danych co robić , po prostu powiedz mu co chcesz i niech wyjaśni szczegóły, jak to zrobić.
Jest to powszechne rozróżnienie wśród języków programowania. We współczesnym interfejsie mówimy, że interakcja z DOM w React jest deklaratywna. Używanie waniliowego JavaScript do modyfikowania DOM jest proceduralne.
Języki takie jak Datalog, QBE i QUEL opierają się na rachunku relacyjnym. Nie będę o tym mówić, ponieważ uważam, że jest to znacznie bardziej niszowy sposób robienia rzeczy w porównaniu z bardziej praktycznym podejściem stosowanym przez SQL, ale możesz na to spojrzeć, jeśli chcesz.
Biorąc pod uwagę to wprowadzenie, przejdźmy do algebry relacyjnej .
Mamy 2 rodzaje operacji:
- operacje podstawowe
- dołącz do operacji
Operacje podstawowe w algebrze relacyjnej
Podstawowe operacje to:
- związek aby uzyskać dane z dwóch tabel, generując sumę krotek, o ile obie tabele mają te same kolumny i typy atrybutów (domenę).
- różnica aby uzyskać dane zawarte w pierwszej tabeli, ale nie w drugiej tabeli, generując różnicę krotek, o ile obie tabele mają te same kolumny i typy atrybutów (domena).
- produkt kartezjański aby pobrać dane z dwóch tabel i wygenerować jedną pojedynczą tabelę, która łączy ich dane na podstawie wartości atrybutu.
- wybierz aby wyodrębnić tylko niektóre krotki (wiersze) zawarte w tabeli na podstawie określonych kryteriów.
- projekt do wygenerowania nowej tabeli zawierającej tylko jeden lub więcej atrybutów (kolumn) istniejącej tabeli
- zmień nazwę używany do zmiany nazwy atrybutu, używany do zapobiegania konfliktom, gdy wiele tabel ma tę samą nazwę dla różnych danych
Operacje łączenia w algebrze relacyjnej
Sprzężenia to prawdopodobnie najpotężniejsze operacje, jakie możesz wykonać za pomocą algebry relacyjnej. Opierają się na podstawowych operacjach i pozwalają skorelować dane zawarte w różnych relacjach (tabelach).
Uwaga:wkrótce opowiem o praktycznych łączeniach w DBMS, to głównie teoria.
Mamy 2 główne wersje złączenia:dołączenie naturalne i teta dołącz . Wszystkie pozostałe wersje pochodzą z tych 2.
Dołączanie naturalne
Naturalne połączenie koreluje dwie relacje (tabele) i tworzy nową tabelę opartą na tych samych wartościach atrybutu.
Najpierw potrzebujemy dwóch relacji o tej samej nazwie atrybutu (kolumnie). Następnie, jeśli wartości w atrybutach w relacji A nie pasują do atrybutów w relacji B, wiersz nie jest częścią wyniku, jest ignorowany.
Przykład:
Relacja A
Identyfikator pracownika | Nazwa |
---|---|
1 | Zaznacz |
2 | Tony |
3 | Rick |
Relacja B
Nazwa menedżera | Identyfikator pracownika |
---|---|
Todd | 1 |
Albert | 2 |
Możemy wykonać naturalne połączenie, aby uzyskać imię szefa dla każdego pracownika:
Identyfikator pracownika | Nazwa | Nazwa menedżera |
---|---|---|
1 | Zaznacz | Todd |
2 | Tony | Albert |
Ponieważ relacje mają wspólną nazwę atrybutu Identyfikator pracownika, jest on obecny w wyniku tylko raz, a nie dwa razy.
Pracownik #3 obecny w relacji A, Rick, nie jest uwzględniony w tej tabeli, ponieważ nie ma odpowiadającego wpisu w relacji B.
Theta-join
Theta-join umożliwia wykonanie złączenia w oparciu o dowolne kryteria w celu porównania dwóch kolumn w dwóch różnych relacjach, a nie tylko równości, jak robi to naturalne złącze.
Wykonuje iloczyn kartezjański dwóch tabel i filtruje wyniki na podstawie wyboru, którego chcemy dokonać.
Połączenie równo
equi-join to łączenie theta, w którym wybór jest oparty na równości wartości atrybutów w dwóch różnych tabelach.
Różnica w stosunku do łączenia naturalnego polega na tym, że możemy wybrać nazwy atrybutów (kolumny), które chcemy porównać.
Dużo więcej o złączeniach porozmawiamy później, gdy wprowadzimy SQL, abyśmy mogli wykorzystać je w praktyce.