1 / 27

Bazy danych 4. Algebra relacji P. F. Góra th-if.uj.pl/zfs/gora/

Bazy danych 4. Algebra relacji P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2006/07. Relacyjne języki zapytań (Relational Query Languages). Pozwalają na manipulacje danymi i pobieranie danych z bazy Mają mocne podstawy teoretyczne (algebra relacji!)

lori
Download Presentation

Bazy danych 4. Algebra relacji P. F. Góra th-if.uj.pl/zfs/gora/

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bazy danych 4. Algebra relacji P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2006/07

  2. Relacyjne języki zapytań(Relational Query Languages) • Pozwalają na manipulacje danymi i pobieranie danych z bazy • Mają mocne podstawy teoretyczne (algebra relacji!) • 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) Choć w w praktyce na ogół zawierają pokaźny zestaw „niebazodanowych” funkcji Bazy danych - wykład 4

  3. 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

  4. Rezerwacje R1 Przykładowe wsytąpienia tabel w pewnej bazie Żeglarze S1 Łódki B1 Żeglarze S2 Anglojęzyczna wersja tego przykładu jest dostępna w co najmniej dwu niezależnych miejscach w sieci… Bazy danych - wykład 4

  5. Podstawowe operacje Nie jest to podstawowa operacja, ale bardzo użyteczny „skrót” • Działania teoriomnogościowe: • Suma mnogościowa (unia) • Przecięcie (iloczyn) zbiorów  • Różnica zbiorów  • Iloczyn kartezjański  • Rzutowanie  • Selekcja  • Przemianowanie  • Złączenie • Dzielenie / Technicznie rzecz biorąc, to też nie jest podstawowa operacja, ale występuje w praktyce tak często, że jest osobno implementowana Wynikiem każdej operacji jest tabela (relacja), można więc tworzyć operacje złożone. Algebra relacji jest domknięta! Bazy danych - wykład 4

  6. 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

  7. 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) S1  S2 Ponieważ jest to zbiór, kolejność krotek nie ma znaczenia. Bazy danych - wykład 4

  8. Różnica mnogościowa R - S — zbiór tych krotek z R, które nie należą do S S1 – S2 Przecięcie mnogościowe S1  S2 R  S — zbiór krotek, z których każda należy jednocześnie do R i S Bazy danych - wykład 4

  9. 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

  10. 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

  11. 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

  12. 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

  13. Rating > 8(S2) Przykład Wybierz tylko te wiersze z tabeli S2, dla których Rating > 8 S2 Bazy danych - wykład 4

  14. Rzutowanie A1,A2,…(R) • Utwórz nową relację, która zawiera tylko te kolumny relacji R, które wymienione są na liście rzutowania A1,A2,… • 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

  15. Usunięto duplikaty! Przykład S2 Imię,Rating(S2) Wybierz tylko kolumny Imię, Rating z tabeli S2 Wiek(S2) Bazy danych - wykład 4

  16. S2 Imię,Rating (Rating > 8(S2)) Składanie operatorów Relacja wyjściowa jednego zapytania może stać się relacją wejściową kolejnego zapytania — powstaje operator złożony. Bazy danych - wykład 4

  17. Przemianowanie S(A1,A2,…,An)(R) W wyniku operacjiS(A1,A2,…,An)(R) z relacji R otrzymujemy relację S, mającą tyle samo atrybutów, co R. Nowyminazwami atrybutów stają się A1, A2, …, 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

  18. Jak zapamiętać te oznaczenia? • —sigma —select • —pi —project • —rho —rename Bazy danych - wykład 4

  19. S1  R1 Konflikt między nazwami kolumn, który trzeba rozwiązać przez przemianowanie 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. Bazy danych - wykład 4

  20. 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

  21. 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

  22. 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

  23. 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 = • czyliA/Bzawiera 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

  24. Przykłady dzielenia B1 B2 B3 A/B1 A/B2 A/B3 A Bazy danych - wykład 4

  25. „Wykluczone” wartości x: A/B: „wykluczone” wartości x 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 Bazy danych - wykład 4

  26. Znajdź imiona żeglarzy, którzy zarezerwowali łódkę nr 103 • Rozw. 1: • Rozw. 2: • Rozw. 3: Bazy danych - wykład 4

  27. Podsumowanie • Model relacyjny ma ściśłe, formalnie zdefiniowane reguły zadawania zapytań, proste, ale potężne. • Algebra relacji jest bardzo użyteczna do reprezentowania planów wykonania zapytań. • 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

More Related