Bazy danych 2. Relacyjny model baz danych

Podobne dokumenty
Bazy danych 11. Algorytmy złaczeń. P. F. Góra

Bazy danych Wykład zerowy. P. F. Góra

Bazy danych 8. Złaczenia ciag dalszy. Grupowanie.

Bazy danych 12. SQL To i owo. Algorytmy złaczeń.

Bazy danych 2. Algebra relacji Zależności funkcyjne

Bazy danych 5. Złaczenia. P. F. Góra

Bazy danych 7. Złaczenia

Bazy danych Algebra relacji Wykład dla studentów matematyki

1 Wstęp do modelu relacyjnego

Model relacyjny. Wykład II

Model relacyjny. Wykład II

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Bazy danych 10. Uzupełnienia i przykłady

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Bazy danych. Andrzej Łachwa, UJ, /14

Bazy danych. Algebra relacji

Teoretyczne podstawy informatyki

Projektowanie relacyjnych baz danych

Bazy danych 12. Bazy NoSQL. P. F. Góra

Relacyjny model baz danych, model związków encji, normalizacje

Bazy danych wykład drugi. Konrad Zdanowski

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

RBD Relacyjne Bazy Danych

RBD Relacyjne Bazy Danych Więzy realcji

Relacyjny model danych

Baza danych. Modele danych

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Plan wykładu: Operacje relacji: suma, przekrój, różnica, złączenia proste, iloczyn kartezjański, złączenia teta.

BAZY DANYCH model relacyjny. Opracował: dr inż. Piotr Suchomski

Agnieszka Ptaszek Michał Chojecki

Haszowanie (adresowanie rozpraszające, mieszające)

Systemy baz danych. mgr inż. Sylwia Glińska

Wykład 2. Relacyjny model danych

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Optymalizacja poleceń SQL Metody dostępu do danych

Model relacyjny bazy danych

Bazy Danych. Model Relacyjny. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Baza danych. Baza danych to:

Bazy danych wykład trzeci. Konrad Zdanowski

Normalizacja baz danych

Tadeusz Pankowski Relacyjne bazy danych. są podstawą zachodniej cywilizacji

Bazy danych 2. Zależności funkcyjne Normalizacja baz danych

Technologia informacyjna

Alicja Marszałek Różne rodzaje baz danych

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Technologie baz danych

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Bazy danych TERMINOLOGIA

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Systemy GIS Tworzenie zapytań w bazach danych

Zaawansowane Modelowanie I Analiza Systemów Informatycznych

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Przestrzenne bazy danych Podstawy języka SQL

Bazy danych 3. Zależności funkcyjne Normalizacja relacyjnych baz danych

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Bazy danych. Wykład III Tabele. Copyrights by Arkadiusz Rzucidło 1

KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości.

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Microsoft SQL Server Podstawy T-SQL

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Wykład XII. optymalizacja w relacyjnych bazach danych

Wprowadzenie do baz danych

Indeksowanie w bazach danych

Autor: Joanna Karwowska

Bazy danych. Dr inż. Paweł Kasprowski

Wykład 8. SQL praca z tabelami 5

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Bazy danych 3. Normalizacja baz danych (c.d.)

Bazy danych 3. Normalizacja baz danych

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Plan. Raport. Tworzenie raportu z kreatora (1/3)

SZKOLENIE: Administrator baz danych. Cel szkolenia

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Technologie baz danych

Oracle11g: Wprowadzenie do SQL

Bazy danych 10. SQL Widoki

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Podstawowe zapytania SELECT (na jednej tabeli)

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Relacyjny model danych. Relacyjny model danych

Rozpatrzymy bardzo uproszczoną bazę danych o schemacie

Systemy OLAP II. Krzysztof Dembczyński. Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska

WPROWADZENIE DO BAZ DANYCH

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Autor: Joanna Karwowska

Bazy danych Access KWERENDY

Język SQL. Rozdział 2. Proste zapytania

Transkrypt:

Bazy danych 2. Relacyjny model baz danych P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2017/18

Relacyjny model baz danych jest stary, ale wciaż zajmuje 80% rynku. Nic nie wskazuje na to, aby w najbliższym czasie miało się to zmienić. Relacyjny model baz danych powstał przy założeniu, że cała baza przechowywana jest na jednym, dostatecznie duzym serwerze. Copyright c 2010-17 P. F. Góra 2 2

Tabela W relacyjnym modelu baz danych występuje tylko jedna struktura służaca do przechowywania danych: tabela (ang. relation od tego pochodzi nazwa, nie od zwiazków, relationship, pomiędzy tabelami). Atrybuty atr 1 atr 2... atr n........................ krotka Każda kolumna zawiera informację o jednym atrybucie. Kolumny sa uporzadko- wane. Każdy wiersz, zwany krotka, odpowiada jednemu rekordowi danych. Copyright c 2010-17 P. F. Góra 2 3

Tabela (c.d.) Tabela jest zbiorem krotek. Zbiór: krotki nie moga się powtarzać. Zbiór: kolejność krotek jest obojętna. Krotki sa uporzadkowane (to znaczy kolejność atrybutów nie jest obojętna). Jak zobaczymy, w relacyjnych bazach danych wielka rolę odgrywaja klucze i klucze obce. Copyright c 2010-17 P. F. Góra 2 4

Dane a metadane Tabela (realcja) to obiekt abstrakcyjny. Ma swoje atrybuty i więzy. Zbiór wszystkich takich projektów tabel nazywa się schematem bazy danych. Schemat wraz z informacjami o użytkownikach i ich uprawnieniach stanowi metadane (dane o danych). Schemat tabeli w zasadzie w czasie normalnego użytkowania nie zmienia się w czasie. Zbiór wszystkich krotek danej tabeli ( zawartość tabeli ) może się zmieniać w czasie. Zbiór taki istniejacy w pewnej chwili czasu nazywa się instancja tabeli (relacji). Instancję istniejac a teraz nazywa się instancja bieżac a. Copyright c 2010-17 P. F. Góra 2 5

Dwanaście zasad Codda dla RDBMS Edgar Codd, IBM, 1970 RDBMS Relational DataBase Management System 1. Informacje sa reprezentowane logicznie w tabelach. 2. Dane sa logicznie dostępne przez podanie nazwy tabeli, wartości klucza i nazwy kolumny. 3. Wartości null sa traktowane w jednolity sposób jako brakujace informacji. Nie moga być traktowane jako puste łańcuchy czy zera. 4. Metadane sa umieszczone w bazie danych tak, jak zwykłe dane. 5. Język obsługi danych ma możliwość definiowania danych i widoków, więzów integralności, przeprowadzania autoryzacji, obsługi transakcji i manipulacji danymi. Copyright c 2010-17 P. F. Góra 2 6

6. Widoki reaguja na zmiany swoich tabel bazowych. Zmiana w widoku powoduje zmianę w tabeli bazowej. 7. Istnieja pojedyncze operacje pozwalajace na wyszukanie, wstawienie, uaktualnienie i usunięcie danych. 8. Operacje użytkownika sa logicznie oddzielone od fizycznych danych i metod dostępu. 9. Operacje użytkownika pozwalaja na zmianę schematu bazy danych bez konieczności tworzenia bazy od nowa. 10. Więzy integralności sa umieszczone w metadanych, nie w zewnętrznej aplikacji. 11. Język manipulacji danymi powinien działać bez względu na to jak i gdzie sa rozmieszczone fizyczne dane oraz nie powinien wymagać zmian, gdy fizyczne dane sa centralizowane lub rozpraszane Copyright c 2010-17 P. F. Góra 2 7

12. Operacje na pojedynczych rekordach przeprowadzane w systemie podlegaja tym samym zasadom i więzom, co operacje na zbiorach danych. Copyright c 2010-17 P. F. Góra 2 8

Algebra relacji Działania teoriomnogościowe Suma mnogościowa (unia) Przecięcie (iloczyn mnogościowy) Różnica mnogościowa Iloczyn kartezjański Selekcja σ Rzutowanie (projekcja) π Przemianowanie ρ Złaczenie Copyright c 2010-17 P. F. Góra 2 9

Suma, iloczyn i różnica mnogościowa Niech będa dane tabele R i S. Tabele te musza mieć takie same schematy takie same atrybuty, a także taka sama kolejność atrybutów. Suma mnogościowa, R S zbiór krotek, które należa do R lub S (lub do obu jednocześnie). Iloczyn mnogościowy, R S zbiór krotek, które należa jednocześnie do R i S. Różnica mnogościowa, R S zbiór krotek, które należa do R i nie należa do S. Iloczyn kartezjański R S zbiór wszystkich par krotek, w których pierwszy element pary należy do R, drugi do S. Schemat tabeli wyjściowej ma po jednym atrybucie (kolmnie) na każdy atrybut R i po jednym atrybucie na każdy atrybut S. Nazwy atrybutów sa, o ile to możliwe, dziedziczone. Copyright c 2010-17 P. F. Góra 2 10

Uwaga na wielozbiory! Tabele (relacje) w modelu relacyjnym powinny być zbiorami (krotki nie moga się powtarzać), ale niekiedy nie sa jeśli dopuszczamy powtórzenia krotek, czyli zbiory zastępujemy wielozbiorami, zmieniaja 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 sa zbiorami, R S może być wielozbiorem! Iloczyn R S krotka w wyniku występuje tyle razy, ile wynosi minimum jej wystapień 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. Copyright c 2010-17 P. F. Góra 2 11

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} Copyright c 2010-17 P. F. Góra 2 12

Selekcja σ C (R) wybierz z tabeli R tylko te krotki, które spełniaja warunek wyboru C. W warunku wyboru moga pojawiać się operatory logiczne. Schemat tabeli wyjściowej jest taki sam, jak tabeli wejściowej. Copyright c 2010-17 P. F. Góra 2 13

Rzutowanie π A1,A 2,...(R) z tabeli R wybierz tylko kolumny obecne na liście rzutowania A 1, A 2,.... Schemat tabeli wyjściowej zawiera tylko kolumny obecne na liście rzutowania. W formalizmie matematycznym wynik rzutowania jest zbiorem (krotki nie moga się powtarzać), ale niekiedy a tak naprawdę dość często w praktyce może okazać się wielozbiorem. W SQL odpowida to różnicy pomiędzy SELECT DISTINCT (zbiór) a SELECT (potencjalnie wielozbiór). Copyright c 2010-17 P. F. Góra 2 14

Przemianowanie Niech tabela R ma atrybuty A 1, A 2,..., A n. ρ S(B1,B 2,...,B n )(R) (to samo n!) to tabela S, która ma tyle samo atrybutów, co R, ale ich nazwami sa B 1, B 2,..., B n. Kolejność atrybutów się nie zmienia. Zawartość krotek się nie zmienia. Skrótowy zapis ρ S (R) oznacza tylko zmianę nazwy tabeli z R na S, bez zmiany nazw atrybutów. Copyright c 2010-17 P. F. Góra 2 15

Wynikiem działania któregokolwiek z powyższych operatorów na tabelę (lub na parę tabel w przypadku operacji teoriomnogościowych) jest tabela, która sama może stać się obiektem działania któregoś z operatorów algebry relacji. Widać, że można tworzyć operatory złożone, a algebra relacji jest domknięta. Przykład Niech tabela R ma atrybuty A, B, C. Napis ρ S ( πa,b (σ B>C C<4 (R)) ) oznacza, że najpierw z tabeli R wybieramy krotki spełniajace warunek wartość atrybutu B jest większa od wartości atrybutu C oraz wartość atrybutu C jest mniejsza, niż 4, a następnie z tak utworzonej tabeli wybieramy tylko kolumny odpowiadajace atrybutom A, B. To, co otrzymaliśmy, nazywamy tabela S. Copyright c 2010-17 P. F. Góra 2 16

Złaczenie R C(R,S) S Złaczenie to podzbiór iloczynu kartezjańskiego R S, o tej własności, iż obejmuje on wszystkie i tylko te krotki, które spełniaja warunek złaczenia C(R, S). Warunek złaczenia obejmuje atrybuty obu złaczanych tabel. Formalnie R C(R,S) S σ C(R,S) (R S) Złaczenie nie jest operacja elementarna, ale pojawia się tak często, że zazwyczaj jest oddzielnie implementowane i zasługuje na osobne oznaczenie. Copyright c 2010-17 P. F. Góra 2 17

Złaczenie naturalne Złaczenie równościowe (ang. equijoin) to takie złaczenie, w którym a) złaczane tabele maja takie same (powtarzajace się) kolumny (atrybuty) na przykład tabela Ludzie i tabela P racownicy maja kolumnę P ESEL oraz b) warunek złaczenia obejmuje tylko równość powtarzajacych się atrybutów. Złaczenie naturalne to złaczenie równościowe po wszystkich powtarzajacych się kolumnach. Jeżeli dwie tabele maja tylko jedna wspólna kolumnę, złaczenie równościowe jest złaczeniem naturalnym. Jeśli wspólnych kolumn jest więcej, do naturalności potrzeba równości wszystkich powtarzajacych się atrybutów. Copyright c 2010-17 P. F. Góra 2 18

Przykład Dane sa dwie tabele: Tabela R Tabela S α β γ α β δ ɛ A 1 a A 1 9 p A 2 b A 4 8 q B 1 c B 2 7 r C 1 d C 1 6 s C 3 e C 2 5 t D 5 f D 5 4 u D 1 3 v Dokonamy na nich teraz kilku złaczeń. Copyright c 2010-17 P. F. Góra 2 19

R R.β<S.β S R.α R.β γ S.α S.β δ ɛ A 1 a A 4 8 q A 2 b A 4 8 q B 1 c A 4 8 q C 1 d A 4 8 q C 3 e A 4 8 q A 1 a B 2 7 r B 1 c B 2 7 r C 1 d B 2 7 r A 1 a C 2 5 t B 1 c C 2 5 t C 1 d C 2 5 t A 1 a D 5 4 u A 2 b D 5 4 u B 1 c D 5 4 u C 1 d D 5 4 u C 3 e D 5 4 u Zwróćmy uwagę na notację: Kolumny (atrybuty) o unikalnych nazwach zachowuja je, powtarzajace się nazwy kolumn sa prefiksowane nazwa tabeli. Przedstawione złaczenie nie jest złaczeniem równościowym. Copyright c 2010-17 P. F. Góra 2 20

R R.β=S.β S R.α R.β γ S.α S.β δ ɛ A 1 a A 1 9 p B 1 c A 1 9 p C 1 d A 1 9 p A 2 b B 2 7 r A 1 a C 1 6 s B 1 c C 1 6 s C 1 d C 1 6 s A 2 b C 2 5 t A 1 a D 1 3 v B 1 c D 1 3 v C 1 d D 1 3 v D 5 f D 5 4 u Jest to złaczenie równościowe, ale nie jest to złaczenie naturalne. Copyright c 2010-17 P. F. Góra 2 21

R (R.α=S.α R.β=S.β) S R S α β γ δ ɛ A 1 a 9 p C 1 d 6 s D 5 f 4 u To jest złaczenie naturalne: złaczenie równościowe po wszystkich powtarzaja- cych się atrybutach, w tym wypadku α, β. W wypadku złaczenia naturalnego konwencja nakazuje wypisywać powtarzajace się atrybuty tylko raz, nie zaś osobno jako kolumny dziedziczone po poszczególnych tabelach. Złaczenia naturalne można oznaczać samym symbolem, bez jawnego podawania warunku złaczenia. Copyright c 2010-17 P. F. Góra 2 22

Filtry Rozważmy złaczenie R (P(R) Q(S) R(R,S)) S Predykaty P i Q, działajace tylko na kolumnach tabel, odpowiednio, R i S, sa filtrami, wybieraja bowiem pewne podzbiory wierszy tych tabel. Predykat R, działajacy na kolumnach obu tabel, jest faktycznym warunkiem złaczenia (zła- czenie theta). Im mniejszy procent wierszy wybiera z tabeli filtr, tym większa ma on selektywność. Dla efektywności złaczenia korzystne jest używanie filtru o największej selektywności możliwie najwcześniej. Copyright c 2010-17 P. F. Góra 2 23

Przedstawione wyżej złaczenie można by także zapisać w postaci (σ P (R)) R(R,S) ( σq (S) ) Copyright c 2010-17 P. F. Góra 2 24

Jak baza danych realizuje złaczenia Złaczenia zdefiniowane sa jako podzbiory iloczynu kartezjańskiego odpowiednich tabel, jednak na ogół nie sa one realizowane w ten sposób, iż najpierw wykonywany jest iloczyn kartezjański, potem zaś wybierane sa odpowiednie wiersze. Sposób realizacji złaczenia nie może wpłynać na ostateczny wynik zapytania, ale może wpłynać (i wpływa!) na czas realizacji zapytania, zajętość pamięci itp. Jak zatem baza danych realizuje złaczenie? Najczęściej używa się następujacych trzech algorytmów: Copyright c 2010-17 P. F. Góra 2 25

1. Złaczenie pętli zagnieżdżonych (nested loops) 1. Baza przeglada pierwsza tabelę wejściowa. Wiersze nie spełniajace filtru nałożonego tylko na ta tabelę odrzuca, wiersze spełniajace filtr przekazuje dalej. 2. Do każdego wiersza z pierwszej tabeli, który pozostał po pierwszym kroku, dopasowywane sa wiersze z drugiej tabeli, spełniajace warunek złaczenia (złaczenie wewnętrzne) lub wartości NULL, jeśli wierszy takowych nie ma (złaczenie zewnętrzne). Odrzucane sa wiersze nie spełniajace warunków dla dotychczas wykorzystanych tabel, czyli filtru dla drugiej tabeli i warunków obejmujacych łacznie pierwsza i druga tabelę. 3. Analogicznie postępujemy dla trzeciej i każdej następnej tabeli. Copyright c 2010-17 P. F. Góra 2 26

Takie złaczenie ma postać zagnieżdżonych pętli najbardziej zewnętrzna o- biega pierwsza tabelę wejściowa, najbardziej wewnętrzna ostatnia. Z tego względu istotne jest, aby pierwsza, najbardziej zewnętrzna pętla, odrzucała możliwie dużo wierszy oraz żeby połaczenia następowały po kolumnach indeksowanych, wówczas bowiem łatwo jest znaleźć wiersze pasujace do aktualnego klucza złaczenia. Na każdym etapie wymagana jest jedynie informacja o aktualnie przetwarzanej pozycji oraz zawartość konstruowanego w danej chwili wiersza wynikowego cały proces nie wymaga dużej pamięci. Złaczenie pętli zagnieżdżonych może mieć warunki złaczenia w postaci nierówności. Wiele RDBMS wyraźnie preferuje ten typ złaczenia. Copyright c 2010-17 P. F. Góra 2 27

2. Złaczenie haszujace (mieszajace, hash join) Stosuje się tylko do złaczeń wewnętrznych, w których warunki złaczenia maja postać równości. Teoretycznie jest to wówczas najszybszy algorytm złaczenia, ale praktycznie tak wcale nie musi być. Złaczane tabele przetwarzane sa niezależnie. Cały algorytm przebiega w dwu fazach: W fazie budowania dla mniejszej (po zastosowaniu filtru) tabeli tworzona jest tablica haszujaca (tablica mieszajaca, hash table), powstała przez zastosowanie funkcji haszujacej do kluczy złaczenia. Teoretycznie rozmieszcza on hasze przyporzadkowane różnym kluczom równomiernie w pamięci. Algorytm działa szczególnie szybko, jeśli cała tablica haszujaca mieści się w pamięci. Copyright c 2010-17 P. F. Góra 2 28

W fazie wyszukiwania sekwencyjnie przegladana jest większa tabela. Na kluczu złaczenia każdego wiersza wykonywana jest ta sama funkcja haszujaca; jeżeli odpowiedni element znajduje się w tablicy haszujacej dla pierwszej tabeli, wiersze sa łaczone. Jeżeli nie, wiersz drugiej tabeli jest odrzucany. Jeżeli tablica haszujaca znajduje się w całości w pamięci, średni czas wyszukiwania elementów jest stały i niezależny od rozmiarów tablicy to właśnie stanowi o efektywności tego algorytmu. Copyright c 2010-17 P. F. Góra 2 29

Problemy ze złaczeniem haszujacym Efektywność złaczenia haszujacego silnie zależy od doboru funkcji haszujacej. Idealna funkcja haszujaca ma tę własność, że zmiana pojedynczego bitu w kluczu, zmienia połowę bitów hasza, i zmiana ta jest niezależna od zmian spowodowanych przez zmianę dowolnego innego bitu w kluczu. Idealne funkcje haszujace sa trudne do zaprojektowania lub kosztowne obliczeniowo, stosuje się więc funkcje gorsze, co jednak prowadzić może do kolizji: Funkcja haszujaca dwóm różnym kluczom usiłuje przypisać tę sama wartość hasza. Aby tego uniknać, stosuje się różne techniki, co jednak powiększa koszt obliczeniowy algorytmu. Innym problemem jest grupowanie: Wbrew założeniom, funkcje haszujace maja tendencję do nierównomiernego rozmieszczania haszy w pamięci, co zmniejsza efektywnośc wykorzystania pamięci i powiększa czas wyszukiwania. Copyright c 2010-17 P. F. Góra 2 30

3. Złaczenie sortujaco-scalaj ace (sort and merge) Tabele odczytuje się niezależnie i stosuje do nich właściwe filtry, po czym wynikowe zbiory wierszy sortuje się względem klucza złaczenia. Następnie dwie posortowane listy zostaja scalone. Baza danych odczytuje na przemian wiersze z każdej listy. Jeżeli warunek złaczenia ma postać równości, baza porównuje górne wiersze i odrzuca te, które znajduja się na posortowanej liście wcześniej niż górny wiersz drugiej tabeli, zwraca zaś te, które wzajemnie sobie odpowiadaja. Procedura scalania jest szybka, ale procedura wstępnego sortowania jest wolna, o ile nie ma gwarancji, że oba zbiory wierszy mieszcza się w pamięci. Copyright c 2010-17 P. F. Góra 2 31

Uwaga! Jeżeli ze względów estetycznych lub innych wynikowy zbiór wierszy pewnego zapytania ma być posortowany, to jeśli ten wynikowy zbiór w całości nie mieści się w pamięci, może to znacznie spowolnić czas wykonywania złaczenia. Copyright c 2010-17 P. F. Góra 2 32