Bazy danych 4 Algebra relacji P F Gra
Bazy danych 4. Algebra relacji P. F. Góra http: //th-www. if. uj. edu. pl/zfs/gora/ semestr letni 2006/07 Bazy danych - wykład 4
Relacyjne języki zapytań (Relational Query Languages) • Pozwalają na manipulacje danymi i pobieranie danych z bazy Choć w w praktyce (algebra na ogół zawierają • Mają mocne podstawy teoretyczne relacji!) pokaźny zestaw „niebazodanowych” funkcji • Pozwalają na znaczną optymalizację • Nie są zwykłymi językami programowania, przeznaczonymi do skomplikowanych obliczeń • Pozwalają użytkownikom zdefiniować co chcą osiągnąć, nie zaś jak to trzeba obliczyć (Non-operational, declarative) Bazy danych - wykład 4 2
• Zrozumienie algebry relacji jest konieczne dla zrozumienia i prawidłowego posługiwania się SQL • Zapytania odnoszą się do wystąpień (instancji) tabel. Wynikiem zapytań też są wystąpienia (instancje) tabel. – Schematy tabel wejściowych zapytania są ustalone. – Schematy tabel wyjściowych zapytania są określone przez definicje języka zapytań. • Zapytanie odnosi się do konkretnego wystąpienia tabeli (lub tabel) o ustalonym schemacie. Bazy danych - wykład 4 3
Przykładowe wsytąpienia tabel w pewnej bazie Rezerwacje R 1 Żeglarze S 1 Łódki B 1 Żeglarze S 2 Anglojęzyczna wersja tego przykładu jest dostępna w co najmniej dwu niezależnych miejscach w sieci… Bazy danych - wykład 4 4
Podstawowe operacje • Działania teoriomnogościowe: Nie jest to • Suma mnogościowa (unia) podstawowa ale bardzo • Przecięcie (iloczyn) zbiorów operacja, użyteczny „skrót” • Różnica zbiorów Technicznie rzecz biorąc, to • Iloczyn kartezjański też nie jest podstawowa operacja, ale występuje w • Rzutowanie praktyce tak często, że jest osobno implementowana • Selekcja • Przemianowanie Wynikiem każdej operacji jest tabela (relacja), można więc • Złączenie tworzyć operacje złożone. Algebra • Dzielenie / relacji jest domknięta! Bazy danych - wykład 4 5
Operacje teoriomnogościowe • Schematy obu tabel (relacji) wejściowych muszą mieć identyczne zbiory atrybutów • Zanim zostanie obliczona suma mnogościowa, przecięcie lub różnica zbiorów, należy uporządkować atrybuty obu tabel tak, aby kolejnośc atrybutów była taka sama. Bazy danych - wykład 4 6
Suma mnogościowa R S — zbiór krotek, z których każda należy do R lub do S (lub do obu jednocześnie) S 1 S 2 Ponieważ jest to zbiór, kolejność krotek nie ma znaczenia. Bazy danych - wykład 4 7
Przecięcie mnogościowe R S — zbiór krotek, z których każda należy jednocześnie do R i S S 1 S 2 Różnica mnogościowa R - S — zbiór tych krotek z R, które nie należą do S S 1 – S 2 Bazy danych - wykład 4 8
Uwaga na wielozbiory! Tabele (relacje) w modelu relacyjny powinny być zbiorami (krotki nie mogą się powtarzać), ale niekiedy nie są — jeśli dopuszczamy powtórzenia krotek, czyli zbiory zastępujemy wielozbiorami, zmieniają się definicje operacji mnogościowych. Suma R S — krotka w wyniku występuje tyle razy, ile występuje w R plus tyle razy, ile występuje w S. Uwaga: jeśli nawet R i S są zbiorami, R S może być wielozbiorem! Iloczyn R S — krotka w wyniku występuje tyle razy, ile wynosi minimum jej wystąpień w R i S. Różnica R–S — krotka w wyniku występuje tyle razy, ile występuje ona w R minus tyle razy, ile występuje ona w S, ale nie mniej niż 0 razy. Bazy danych - wykład 4 9
Przykład: R = {A, B, B}, S = {A, B, C, C} R S = {A, A, B, B, B, C, C} R S = {A, B} R–S = {B} Bazy danych - wykład 4 10
Uwaga na wielozbiory (cd)! Tabele (relacje) w modelu relacyjny powinny być zbiorami (krotki nie mogą się powtarzać), ale niekiedy nie są. W dobrze zaprojektowanej relacyjnej bazie danych tabele muszą być zbiorami. Kiedy mogą pojawiać się wielozbiory? Wielozbiory w dobrze zaprojektowanych relacyjnych bazach danych pojawiają się (i to dość często) jako tabele wynikowe pewnych zapytań. Tabele te mogą być tabelami wejściowymi kolejnych zapytań… Bazy danych - wykład 4 11
Selekcja C(R) • Wybierz z tabeli R tylko te wiersze, które spełniają warunek wyboru C. – W warunku wyboru mogą pojawiać się operatory logiczne! • Schemat wyjściowej relacji jest taki sam, jak relacje wejściowej. • Jeśli R jest zbiorem, nie ma duplikatów. – W praktyce duplikaty niekiedy się pojawiają ØW SQL rozróżnienie SELECT vs SELECT DISTINCT. Bazy danych - wykład 4 12
Przykład Wybierz tylko te wiersze z tabeli S 2, dla których Rating > 8(S 2) S 2 Bazy danych - wykład 4 13
Rzutowanie A 1, A 2, …(R) • Utwórz nową relację, która zawiera tylko te kolumny relacji R, które wymienione są na liście rzutowania A 1, A 2, … • Schemat rejacji wyjściowej zawiera tylko kolumny występujące na liście rzutowania. • W formalizmie matematycznym operator rzutowania eliminuje duplikaty – W praktyce (SQL) eliminowania duplikatów trzeba zażądać explicite. Bazy danych - wykład 4 14
S 2 Wiek(S 2) Przykład Imię, Rating(S 2) Wybierz tylko kolumny Imię, Rating z tabeli S 2 Usunięto duplikaty! Bazy danych - wykład 4 15
Składanie operatorów Relacja wyjściowa jednego zapytania może stać się relacją wejściową kolejnego zapytania — powstaje operator złożony. S 2 Imię, Rating ( Rating > 8(S 2)) Bazy danych - wykład 4 16
Przemianowanie S(A 1, A 2, …, An)(R) W wyniku operacji S(A 1, A 2, …, An)(R) z relacji R otrzymujemy relację S, mającą tyle samo atrybutów, co R. Nowymi nazwami atrybutów stają się A 1, A 2, …, An. Kolejność atrybutów zostaje zachowana. Jeśli chcemy tylko zmienić nazwę samej relacji, bez zmiany nazw atrybutów, piszemy S(R). Bazy danych - wykład 4 17
Jak zapamiętać te oznaczenia? • — sigma — select • — pi — project • — rho — rename Bazy danych - wykład 4 18
Iloczyn kartezjański • R S — każda krotka (wiersz) z R zostaje połączona z każdą krotką (wierszem) S • Schemat wyniku ma po jednym atrybucie (kolmnie) na każdy atrybut R i po jednym atrybucie na każdy atrybut S. Nazwy atrybutów są, o ile to możliwe, dziedziczone. S 1 R 1 Konflikt między nazwami kolumn, który trzeba rozwiązać przez przemianowanie Bazy danych - wykład 4 19
Złączenie warunkowe (złączenie theta) • Z iloczynu kartezjańskiego R S wybieramy tylko te krotki, które spełniają warunek C. • (Na ogół) mniej krotek niż w iloczynie kartezjańskim. • Schemat wyniku taki, jak schemat iloczynu kartezjańskiego. Bazy danych - wykład 4 20
Złączenie równościowe (equi-join) • Złączenie warunkowe, w którym warunek C zawiera same równości. • Schemat wyniku podobny do schematu iloczynu kartezjańskiego, ale zawiera tylko jedno wystąpienie każdej kolumny, dla której zażądano równości. Złączenie naturalne — złączenie równościowe, dla którego zażądano równości we wszystkich wspólnych kolumnach. Bazy danych - wykład 4 21
Ważna uwaga Złączenie jest definiowane jako podzbiór iloczynu kartezjańskiego tabel. Nie oznacza to jednak, że złączenie jest w praktyce realizowane przez RDBMS w ten sposób, iż najpierw tworzy się iloczyn kartezjański, a później wybiera z niego krotki spełniające warunek złączenia. Bazy danych - wykład 4 22
Dzielenie • Nie jest prymitywem, ale jest użyteczne w zapytaniach typu Znajdź żeglarzy, którzy zarezerwowali wszystkie łódki. • Niech A ma dwa pola, x, y, i niech B ma tylko jedno pole y: – A/B = – czyli A/B zawiera wszystkie krotki x (żeglarzy) takie, że każdej krotce y (łódce) z B odpowiada krotka xy w A. – Lub też: Jeśli zbiór wartości y (łódek), stowarzyszonych z wartością x (żeglarz) w A, zawiera wszystkie wartości y z B, x należy do A/B. • Tak x, jak i y, mogą obejmować więcej niż jedno pole. Bazy danych - wykład 4 23
Przykłady dzielenia B 1 B 2 B 3 A A/B 1 Bazy danych - wykład 4 A/B 2 A/B 3 24
Wyrażanie A/B poprzez podstawowe operatory • Idea: W celu obliczenia A/B, znajdźmy wszystkie wartości x, które nie są „wykluczone” przez jakieś y B. • x jest „wykluczone”, jeśli po dołączeniu y dostaniemy krotkę xy A „Wykluczone” wartości x: A/B: „wykluczone” wartości x Bazy danych - wykład 4 25
Znajdź imiona żeglarzy, którzy zarezerwowali łódkę nr 103 • Rozw. 1: • Rozw. 2: • Rozw. 3: Bazy danych - wykład 4 26
Podsumowanie v Model relacyjny ma ściśłe, formalnie zdefiniowane reguły zadawania zapytań, proste, ale potężne. v Algebra relacji jest bardzo użyteczna do reprezentowania planów wykonania zapytań. v Jedno zapytanie zazwyczaj można zrealizować na kilka sposobów. Optymalizator dobrego RDBMS powinien wybrać sposób najlepszy, ale niekiedy trzeba to zrobić ręcznie. Bazy danych - wykład 4 27
- Slides: 27