Algebra relacyjna w DBMS z przykładami

⚡ Inteligentne podsumowanie

Algebra relacyjna w systemie DBMS to proceduralny język zapytań, który przyjmuje relacje jako dane wejściowe i generuje nowe relacje jako dane wyjściowe. Grupuje operatory na kategorie unarne, zbiorowe i binarne, zapewniając teoretyczną podstawę, którą silniki SQL tłumaczą na wykonywalne plany zapytań.

  • 🔍 Zacznij od operatorów jednoargumentowych: Polecenia SELECT, PROJECT i RENAME umożliwiają filtrowanie wierszy, wybieranie kolumn i zmianę nazw atrybutów w ramach jednej relacji.
  • 📚 Zastosuj teorię mnogości: SUNIA, ILOCZYN, RÓŻNICA i ILOCZYN KARTEZJAŃSKI łączą relacje zgodne z unią w nowe wyniki.
  • 🔗 Dołącz celowo: Połączenia Theta, Equi i Natural obsługują dopasowania wewnętrzne, podczas gdy połączenia Left, Right i Full Outer przechowują niedopasowane krotki z wartościami null.
  • 📐 Kompatybilność zegarka: Przed jakąkolwiek operacją na zbiorach lub unii zawsze sprawdź, czy arność, nazwy atrybutów i domeny są zgodne.
  • 🤖 Użyj sztucznej inteligencji do tłumaczenia: Asystenci AI konwertują wyrażenia algebraiczne na język SQL, wyjaśniają kolejność operatorów i oznaczają brakujące warunki łączenia w prostym języku angielskim.

Algebra relacyjna w DBMS

Czym jest algebra relacyjna?

Algebra relacyjna to proceduralny język zapytań, który akceptuje wystąpienia relacji jako dane wejściowe i zwraca nowe wystąpienia relacji jako dane wyjściowe. Stosuje on rekurencyjnie stały zestaw operatorów do jednej lub większej liczby relacji, a wynik każdego operatora jest relacją, którą można przekazać do kolejnej operacji. Silniki SQL wykorzystują tę algebrę do planowania i wykonywania zapytań.

Podstawowa algebra relacyjna Operanych

Operatory algebry relacyjnej dzielą się na trzy grupy.

Jednoargumentowy relacyjny Operanych

  • WYBIERZ (σ)
  • PROJEKT (π)
  • ZMIEŃ NAZWĘ (ρ)

Operacje z teorii mnogości

  • UNIA (∪)
  • PRZECINANIE (∩)
  • RÓŻNICA (−)
  • ILOCZYN KARTEZJAŃSKI (×)

Binarna relacja Operanych

  • DOŁĄCZ
  • PODZIAŁ

Poniższe sekcje opisują każdego operatora i przykłady jego działania.

WYBIERZ (σ)

SELECT Operacja wybiera podzbiór krotek spełniających dany predykat. Symbol sigma σ oznacza to:

σp(r)

gdzie σ jest operatorem, p jest warunkiem zdania i r jest relacją (tabelą). SELECT zachowuje schemat i odrzuca wiersze, które nie spełniają predykatu.

1 przykład

σ topic = "Database" (Tutorials)

Wybiera krotki z Poradniki gdzie temat jest równy „Baza danych”.

2 przykład

σ topic = "Database" AND author = "guru99" (Tutorials)

Wybiera krotki z Poradniki gdzie tematem jest „Baza danych”, a autorem jest guru99.

3 przykład

σ sales > 50000 (Customers)

Wybiera krotki z Nasi Klienci których wartość sprzedaży przekracza 50 000.

Projekcja (π)

projekcja Operator usuwa wszystkie atrybuty z relacji wejściowej z wyjątkiem wymienionych, tworząc pionowy podzbiór. Projekcja eliminuje również duplikaty wierszy, które powstają w wyniku upuszczenia.ping atrybuty. Symbol pi π oznacza to.

Przykład: rozważ poniższą tabelę.

Identyfikator klienta Nazwa klienta Status
1 Google Aktywna
2 Amazon Aktywna
3 Apple Nieaktywny
4 Alibaba Aktywna

Projekcja na podstawie nazwy klienta i statusu:

π CustomerName, Status (Customers)
Nazwa klienta Status
Google Aktywna
Amazon Aktywna
Apple Nieaktywny
Alibaba Aktywna

Zmień nazwę (ρ)

przemianować Operator to operacja jednoargumentowa, która nadaje nową nazwę atrybutowi (lub całej relacji). Na przykład: ρ(a/b) R zmienia nazwy atrybutów b relacji R do aZmiana nazwy jest szczególnie użyteczna, gdy trzeba wykonać połączenie własne lub połączyć dwie relacje o wspólnych nazwach atrybutów.

Unia Operacja (∪)

UNION operator oznaczony przez , zwraca każdą krotkę, która pojawia się w relacji A lub relacji B, automatycznie usuwając duplikaty.

Result ← A ∪ B

Aby związek był ważny:

  • A i B muszą mieć taką samą liczbę atrybutów (tę samą arność).
  • Odpowiednie domeny atrybutów muszą być kompatybilne.
  • Duplikaty krotek są usuwane automatycznie.

Przykład. Rozważ te dwie tabele:

Tabela A Tabela B
kolumna 1 kolumna 2 kolumna 1 kolumna 2
1 1 1 1
1 2 1 3

A ∪ B daje:

kolumna 1 kolumna 2
1 1
1 2
1 3

Ustaw różnicę (−)

Symbol minus oznacza ustawić różnicę. Wynik A − B jest relacją zawierającą wszystkie krotki, które znajdują się w A, ale nie znajdują się w B.

  • A i B muszą być zgodne ze związkiem zawodowym.
  • Nazwy atrybutów i domeny muszą być zgodne.

Przykład: A − B

kolumna 1 kolumna 2
1 2

Przecięcie (∩)

skrzyżowanie operator oznaczony przez , definiuje relację zawierającą każdą krotkę pojawiającą się zarówno w A, jak i B. A i B muszą być zgodne ze sobą pod względem unii.

Wizualna definicja skrzyżowania

Wizualna definicja skrzyżowania.

Przykład: A ∩ B

kolumna 1 kolumna 2
1 1

Iloczyn kartezjański (×) w systemie DBMS

Produkt kartezjański Łączy każdą krotkę jednej relacji z każdą krotką innej relacji, scalając ich kolumny. Sam wynik rzadko jest użyteczny, ale w połączeniu z predykatem SELECT staje się podstawą JOIN. Nazywa się to również iloczynem wektorowym lub łączeniem krzyżowym.

Przykład: σ kolumna 2 = '1' (A × B)

Wyrażenie zwraca każdy wiersz A × B którego column 2 wartość wynosi 1.

kolumna 1 kolumna 2
1 1
1 1

Dołącz do rejestru Operanych

A przystąpić jest iloczynem kartezjańskim, po którym następuje predykat selekcji. Połączenia są oznaczone symbolem symbol i umożliwia łączenie powiązanych krotek z różnych relacji w sensowny sposób.

Typy połączeń:

  • Połączenia wewnętrzne: Połączenie Theta, połączenie Equi, połączenie Natural.
  • Połączenia zewnętrzne: Połączenia lewe, prawe i zewnętrzne całkowite.

Połączenie wewnętrzne

W połączenie wewnętrzne, uwzględniane są tylko krotki spełniające kryteria dopasowania; pozostałe są odrzucane.

Dołącz do Thety

Ogólna forma JOIN to Dołącz do Theta, oznaczonego jako θ. Połączenie theta może wykorzystywać w kryteriach wyboru dowolny warunek porównania.

A ⋈θ B

Na przykład:

A ⋈ A.column 2 > B.column 2 (B)
kolumna 1 kolumna 2
1 2

Equi Dołącz

Gdy połączenie Theta wykorzystuje wyłącznie warunki równości, staje się Equi join.

A ⋈ A.column 2 = B.column 2 (B)
kolumna 1 kolumna 2
1 1

Połączenie Equi jest jednym z najczęściej używanych stylów połączeń, a RDBMS optymalizator zapytań zazwyczaj wkłada dużo wysiłku w zwiększenie jego wydajności.

Naturalne połączenie (⋈)

A Naturalne połączenie Wymaga wspólnego atrybutu (kolumny) dla relacji. Wspólny atrybut musi mieć tę samą nazwę i domenę. Wynik zawiera jedną kopię pasującej kolumny.

Rozważ te dwie tabele.

Tabela C.
Ilość Kwadratowe
2 4
3 9
Tabela D.
Ilość Kostka
2 8
3 27

C ⋈ D produkuje:

Ilość Kwadratowe Kostka
2 4 8
3 9 27

Połączenie zewnętrzne

An złącze zewnętrzne przechowuje krotki spełniające kryteria dopasowania oraz krotki, które tego nie robią, wypełniając brakujące kolumny wartością NULL.

Lewe połączenie zewnętrzne (A ⟕ B)

Lewe sprzężenie zewnętrzne zachowuje każdą krotkę w relacji lewej. Jeśli wiersz w A nie ma odpowiadającego mu wiersza w B, atrybuty wniesione przez B są wypełniane wartością NULL.

Lewe połączenie zewnętrzne

Rozważ poniższe tabele:

Tabela A
Ilość Kwadratowe
2 4
3 9
4 16
Tabela B
Ilość Kostka
2 8
3 18
5 75

A ⟕ B daje:

Ilość Kwadratowe Kostka
2 4 8
3 9 18
4 16 NULL

Prawe połączenie zewnętrzne (A ⟖ B)

Prawe sprzężenie zewnętrzne utrzymuje każdą krotkę we właściwej relacji. Jeśli wiersz w B nie ma odpowiadającego mu wiersza w A, kolumny wniesione przez A są wypełniane wartością NULL.

Prawe połączenie zewnętrzne

A ⟖ B daje:

Ilość Kostka Kwadratowe
2 8 4
3 18 9
5 75 NULL

Pełne połączenie zewnętrzne (A ⟗ B)

Pełne sprzężenie zewnętrzne zachowuje każdą krotkę z obu relacji, niezależnie od tego, czy warunek sprzężenia został spełniony. Brakujące wartości po obu stronach stają się wartościami NULL.

A ⟗ B daje:

Ilość Kwadratowe Kostka
2 4 8
3 9 18
4 16 NULL
5 NULL 75

OperaPodsumowanie odniesienia tor

Użyj tej tabeli referencyjnej, aby na pierwszy rzut oka przypomnieć sobie, co robi każdy operator.

Operacja (Symbol) Cel
WYBIERZ (σ) Wybiera podzbiór krotek spełniających dany predykat.
PROJEKT (π) Zachowuje tylko wymienione atrybuty i usuwa zduplikowane wiersze.
UNIA (∪) Zwraca każdą krotkę pojawiającą się w A lub B bez duplikatów.
RÓŻNICA ZESTAWÓW (−) Zwraca krotki w A, których nie ma w B.
PRZECINANIE (∩) Zwraca krotki występujące zarówno w A, jak i B.
ILOCZYN KARTEZJAŃSKI (×) Łączy każdą krotkę A z każdą krotką B.
INNER JOIN Zachowuje tylko krotki spełniające warunek połączenia.
DOŁĄCZENIE THETA (θ) Połączenie w formie ogólnej przy użyciu dowolnego predykatu porównania.
DOŁĄCZ DO EQUI Połączenie theta wykorzystujące wyłącznie porównania równości.
NATURALNE POŁĄCZENIE (⋈) Łączy relacje atrybutów o tej samej nazwie i domenie.
LEWE POŁĄCZENIE ZEWNĘTRZNE (⟕) Zachowuje każdą krotkę z lewej relacji, wypełnia prawą wartością NULL.
PRAWE POŁĄCZENIE ZEWNĘTRZNE (⟖) Zatrzymuje każdą krotkę z prawej relacji, wypełnia lewą wartość NULL.
PEŁNE POŁĄCZENIE ZEWNĘTRZNE (⟗) Zachowuje każdą krotkę z obu relacji, wypełniając brakujące wartości wartością NULL.

FAQ

Algebra relacyjna to proceduralny język matematyczny używany do definiowania operacji na relacjach. SQL to deklaratywny język zapytań, który silniki baz danych wewnętrznie tłumaczą na plany wykonania w stylu algebraicznym.

Dwie relacje są zgodne pod względem unii, gdy mają taką samą liczbę atrybutów, a każdy odpowiadający im atrybut należy do tej samej dziedziny. Relacje UNION, INTERSECTION i DIFFERENCE wymagają zgodności pod względem unii.

Iloczyn kartezjański mnoży każdy wiersz A przez każdy wiersz B, tworząc ogromne relacje pośrednie o niewielkim znaczeniu. Zwykle po nim następuje predykat SELECT, aby utworzyć użyteczne połączenie.

Nie. Czysta algebra relacyjna traktuje relacje jak zbiory, więc duplikaty są automatycznie eliminowane po każdej operacji. SQL zachowuje się inaczej — działa na zbiorach wielokrotnych i usuwa duplikaty tylko wtedy, gdy używana jest instrukcja DISTINCT.

Operator DIVISION odpowiada na zapytania „dla wszystkich” – na przykład, aby znaleźć klientów, którzy zamówili wszystkie produkty z katalogu. Zwraca krotki jednej relacji, które pasują do wszystkich krotek innej relacji.

Użyj sprzężenia zewnętrznego, gdy niedopasowane wiersze nadal mają znaczenie — na przykład, wymieniając każdego klienta wraz z opcjonalnymi danymi zamówienia. Złączenia wewnętrzne pomijają te niedopasowane wiersze; sprzężenia zewnętrzne pozostawiają je z wypełnieniami NULL.

Asystenci AI tłumaczą wyrażenia algebraiczne na język SQL i odwrotnie, krok po kroku wyjaśniają kolejność operatorów i sygnalizują brakujące predykaty łączące, które w przeciwnym razie spowodowałyby, że zapytanie zamieniłoby się w powolny iloczyn kartezjański.

Tak. Narzędzia AI zamieniają proste pytania, takie jak „klienci z Indii, którzy kupili każdy produkt”, na drzewa algebraiczne z operatorami SELECT, PROJECT i DIVISION, a następnie konwertują je na uruchamialny kod SQL.

Podsumuj ten post następująco: