Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Podobne dokumenty
Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

RBD Relacyjne Bazy Danych

Rozpatrzymy bardzo uproszczoną bazę danych o schemacie

Model relacyjny. Wykład II

1 Wstęp do modelu relacyjnego

Model relacyjny. Wykład II

Autor: Joanna Karwowska

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Technologie baz danych

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

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

Przestrzenne bazy danych Podstawy języka SQL

Systemy baz danych. Notatki z wykładu

Teoretyczne podstawy informatyki

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

RBD Relacyjne Bazy Danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

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

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

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Technologie baz danych

SQL Structured Query Language

Wykład 6. SQL praca z tabelami 3

Relacyjny model danych

Złaczenia tablic: FROM, WHERE, JOIN

Projektowanie relacyjnych baz danych

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

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

3. Podzapytania, łączenie tabel i zapytań

Wprowadzenie do języka SQL

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Bazy danych. Informacje podstawowe

Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

Systemy GIS Tworzenie zapytań w bazach danych

Podstawy języka SQL cz. 2

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Operacja Teta-złączenia. v1 v1 Θ v2

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

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

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

RBD Relacyjne Bazy Danych Więzy realcji

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

Bazy danych. Algebra relacji

Bazy danych. Wprowadzenie. SKiBD

SQL Structured Query Language

Grupowanie i funkcje agregacji

Zasady transformacji modelu DOZ do projektu tabel bazy danych

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

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

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

Technologie i systemy oparte na logice rozmytej

Bazy danych. Dr inż. Paweł Kasprowski

Wypisujemy nazwiska pracowników o numerach równych 100 lub 500. SELECT DISTINCT Nazwisko FROM Pracownik WHERE NrPrac IN (100,500);

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Bazy danych i usługi sieciowe

Bazy Danych egzamin 9 luty, 2012 rozwiazania

Wykład 2. Relacyjny model danych

Relacyjny model danych

Laboratorium nr 10. Temat: Połączenia relacji

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Wykład XII. optymalizacja w relacyjnych bazach danych

Zbiory, relacje i funkcje

Bazy Danych. SQL Podstawy języka II: zapytania. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

SQL (ang. Structured Query Language)

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Wykład 3. Miara zewnętrzna. Definicja 3.1 (miary zewnętrznej) Funkcję µ przyporządkowującą każdemu podzbiorowi

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Język SQL podstawy zapytań

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Laboratorium Bazy danych SQL 2

Bazy danych. Dr inż. Paweł Kasprowski

Baza danych. Modele danych

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

Temat : SBQL 1 obiektowy język zapytań.

1. Zakłada się, że każda operacja (read, write) w harmonogramie obejmuje również blokowanie i odblokowanie jednostki. Czy następujący harmonogram

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

PLAN WYKŁADU BAZY DANYCH ETAPY PRZETWARZANIA ZAPYTANIA OPTYMALIZACJA ZAPYTAŃ

Język SQL. Rozdział 2. Proste zapytania

... (środowisko) minut

Oracle11g: Wprowadzenie do SQL

Bazy danych wykład trzeci. Konrad Zdanowski

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

Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6

Współczesne systemy baz danych

Ćwiczenie 4 - połączenia

Transkrypt:

Bazy danych Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski

Wykład 1 Algebra relacyjnych baz danych jako podstawa języka SQL i jego implementacji w systemach baz danych Oracle Bazy danych. Wykład 1 2

Algebra relacyjnych baz danych W teorii mnogości (teorii zbiorów) relacją R określoną: w zbiorze A nazywamy dowolny podzbiór iloczynu kartezjańskiego A A: R A A w zbiorach A, B nazywamy dowolny podzbiór iloczynu kartezjaskiego A B: R A B w zbiorach A 1, A 2,..., A n nazywamy dowolny podzbiór iloczynu A 1 A 2... A n : R A 1 A 2... A n Bazy danych. Wykład 1 3

Algebra relacyjnych baz danych Relację R relacyjnej bazy danych (RBD) można z punktu widzenia teorii zbiorów wstępnie traktować jako nazwany dowolny podzbiór iloczynu kartezjańskiego zbiorów D 1, D 2,..., D n, będących dziedzinami (zbiorami wartości) odpowiednio atrybutów A 1, A 2,..., A n. Jednak należy pamiętać, że wykorzystanie w tej definicji iloczynu kartezjańskiego D 1 D 2... D n nie jest precyzyjne. Jest tak głównie dlatego, że kolejność atrybutów A 1, A 2,..., A n relacji RBD nie ma znaczenia. Bazy danych. Wykład 1 4

Algebra relacyjnych baz danych Tabelaryczna reprezentacja relacji RBD Dziedziny atrybutów: D A =D(A)={a1,a2,a3} D B =D(B)={b1,b2} D C =D(C)={c2,c3} Bazy danych. Wykład 1 5

Algebra relacyjnych baz danych Wymagane cechy, aby relacja R była relacją RBD: 1) atomowość: elementy krotek relacji R reprezentują pojedyncze wartości, 2) każdy atrybut A ma rozróżnialną nazwę, 3) wszystkie wartości atrybutu A pochodzą z tej samej dziedziny (domeny) D, 4) porządek atrybutów w relacji jest nieistotny, 5) każda krotka jest różna, 6) porządek krotek w relacji jest nieistotny. Bazy danych. Wykład 1 6

Kompatybilność relacji Schemat relacji inaczej nagłówek relacji R to zbiór nazw atrybutów A 1, A 2,..., A n relacji R: N(R)={A 1, A 2,..., A n } Relacje R i S nazywamy kompatybilnymi, gdy mają takie same nagłówki: N(R)=N(S) tzn. D(R.A 1 )=D(S.A 1 ), D(R.A 2 )=D(S.A 2 ),, D(R.A n )=D(S.A n ) Bazy danych. Wykład 1 7

Działania algebry RBD Oparte na teorii zbiorów: 1) Unia 2) Przecięcie (iloczyn) 3) Różnica 4) Produkt (iloczyn kartezjański) Dotyczące informacji o strukturze krotek: 5) Przypisanie (alias) 6) Projekcja (rzutowanie) 7) Selekcja 8) Złączenie 9) Dzielenie Bazy danych. Wykład 1 8

Unia Niech R i S są relacjami kompatybilnymi. Unią relacji R i S jest relacja R S o takim samym nagłówku, zawierająca wszystkie krotki znajdujce się w R, S lub w obydwu relacjach. Standard SQL i Oracle SQL: select X,Y,Z from R union select X,Y,Z from S; Bazy danych. Wykład 1 9

Przecięcie (iloczyn) Niech R i S są relacjami kompatybilnymi. Przecięciem relacji R i S jest relacja R S o takim samym nagłówku, zawierająca te krotki, które znajdują się zarówno w R, jak i w S. Standard SQL i Oracle SQL: select X,Y,Z from R intersect select X,Y,Z from S; Bazy danych. Wykład 1 10

Różnica Niech R i S są relacjami kompatybilnymi. Różnicą relacji R i S jest relacja R S o takim samym nagłówku, zawierająca wszystkie krotki z relacji R, których nie ma w relacji S. Standard SQL i Oracle SQL: select X,Y,Z from R minus select X,Y,Z from S; Bazy danych. Wykład 1 11

Produkt (iloczyn kartezjański) Niech relacje R i S mają nagłówki odpowiednio N(R)={X1,X2,...,Xn} i N(S)={Y1,Y2,...,Ym}. Iloczynem kartezjańskim relacji R i S jest relacja R S o nagłówku N(R S)= {R.X1,R.X2,...,R.Xn, S.Y1,S.Y2,...,S.Ym}, zawierająca krotki będące wszystkimi możliwymi połączeniami krotek z relacji R i S. Jeśli nazwy atrybutów relacji R i S są różne, to wówczas nagłówek iloczynu kartezjańskiego można zapisać w postaci: N(R S)= {X1,X2,...,Xn,Y1,Y2,...,Ym} Bazy danych. Wykład 1 12

Produkt (iloczyn kartezjański) Standard SQL i Oracle SQL: select R.X,R.Y,R.Z,S.X,S.Y,S.Z from R, S; Bazy danych. Wykład 1 13

Alias (przypisanie) relacji Aliasem relacji R nazywamy nadanie tej relacji innej nazwy, np. R=A Oracle SQL: select A.X,A.Y,A.Z from R A; Bazy danych. Wykład 1 14

Alias (przypisanie) atrybutu Aliasem atrybutu X relacji R nazywamy nadanie temu atrybutowi innej nazwy, np. X=Xnowy Oracle SQL: select X as Xnowy,Y,Z from R; lub select X Xnowy,Y,Z from R; Bazy danych. Wykład 1 15

Projekcja (rzutowanie) Niech relacje R ma nagłówek N(R)={X1,X2,...,Xn}. Projekcja relacji R na atrybuty Xi1,Xi2,...,Xik, gdzie {Xi1,Xi2,...,Xik} {X1,X2,...,Xn}, jest relacją T=R[Xi1,Xi2,...,Xik] o nagłówku N(T)= {Xi1,Xi2,...,Xik}, zawierajcą krotki t spełniające warunek: krotki r R pojedyncza krotka t T: t(xij)=r(xij) j: 1 j k. Inna często używana notacja projekcji relacji R na atrybuty Xi1,Xi2,...,Xik: Xi1,Xi2,...,Xik(R) Bazy danych. Wykład 1 16

Projekcja (rzutowanie) Standard SQL i Oracle SQL: select X,Y from S; Bazy danych. Wykład 1 17

Selekcja Niech relacja R ma nagłówek N(R)={X1,X2,...,Xn}. Selekcja relacji R zgodnie z kryterium C jest relacją T = R gdzie C o tym samym nagłówku co relacja R, zawierającą krotki s spełniajce warunek selekcji C, który może przyjmować następujące postaci: 1) C może być dowolnym porównaniem: Xi Xj lub Xi x, gdzie x D(Xi) - dziedziny atrybutu Xi, a operator porównania może być następujący: <, >, =, <=, >=, <>; w Oracle u można stosować także operator różności:!= 2) Jeżeli C i C są warunkami selekcji, wówczas można utworzyć nowy warunek C w postaci: C i C (C and C ), C lub C (C or C ), nie C (not C). Inna często używana notacja selekcji relacji R zgodnie z kryterium C: C(R) Bazy danych. Wykład 1 18

Selekcja Standard SQL i Oracle SQL: select X,Y,Z from R where X=x1 and Y=y2; Bazy danych. Wykład 1 19

Złączenia Złączenie naturalne (odnosi się zwykle do identycznie nazwanych atrybutów w relacjach wchodzących w to złączenie) Złączenie wewnętrzne (inaczej: proste złączenie), tu wynikiem są krotki spełniające dokładnie warunek złączenia Złączenia zewnętrzne (nadzbiór złączenia wewnętrzego): - złączenie zewnętrzne lewostronne, - złączenie zewnętrzne prawostronne, - złączenie zewnętrzne obustronne Równozłączenie (do porównania atrybutów współdzielonych używamy operatora: =) -złączenia, w tym typie złączenia do porównania atrybutów współdzielonych używamy operatora : - jeśli operatorem jest: <, >, <=, >=, to mówimy o semizłączeniu (półzłączeniu) - jeśli operatorem różności <> (!=), to mówimy o antyzłączeniu Samozłączenie (złączenie relacji samej z sobą) Bazy danych. Wykład 1 20

Złączenie naturalne wewnętrzne Niech relacje R i S mają nagłówki odpowiednio N(R)={X1,X2,...,Xn,Z1,Z2,...,Zk} i N(S)={Z1,Z2,...,Zk,Y1,Y2,...,Ym}, gdzie n,k,m 0 oraz {Z1,Z2,...,Zk} jest zupełnym podzbiorem atrybutów współdzielonych przez obie relacje. Złączenie (naturalne) R i S jest relacją R S o nagłówku N(R S) = {X1,X2,...,Xn,Z1,Z2,...,Zk,Y1,Y2,...,Ym}, zawierającą jedynie takie krotki t, dla których spełniony jest warunek równozłączenia, tzn. krotki r R oraz s S: r(zi)=s(zi) i: 1 i k wówczas t R S: t(x1,x2,...,xn,z1,z2,...,zk,y1,y2,...,ym) Zdefiniowane powyżej ZŁĄCZENIE NATURALNE należy do ZŁĄCZEŃ WEWNĘTRZNYCH oraz RÓWNOZŁĄCZEŃ, ale należy pamiętać, że ZŁĄCZENIE NATURALNE może dotyczyć szerszej kategorii złączeń. ZŁĄCZENIE NATURALNE bywa utożsamiane po prostu ze ZŁĄCZENIEM, jednak częściej, tak jak np. w Oracle SQL, ZŁĄCZENIE utożsamia się ze ZŁĄCZENIEM WEWNĘTRZNYM! Bazy danych. Wykład 1 21

Złączenie naturalne wewnętrzne Bazy danych. Wykład 1 22

Złączenie naturalne wewnętrzne Jedyna możliwość w starszych wersjach Oracle SQL: select X, R.Z1, R.Z2, Y from R, S where R.Z1=S.Z1 and R.Z2=S.Z2; Nowe możliwości Oracle SQL inspirowane przez Standard SQL: select X, Z1, Z2, Y from R natural join S; select X, R.Z1, R.Z2, Y from R inner join S on R.Z1=S.Z1 and R.Z2=S.Z2; select X, R.Z1, R.Z2, Y from R join S on R.Z1=S.Z1 and R.Z2=S.Z2; Bazy danych. Wykład 1 23

Złączenie (naturalne) zewnętrzne lewostronne Bazy danych. Wykład 1 24

Złączenie (naturalne) zewnętrzne lewostronne Jedyna możliwość w starszych wersjach Oracle SQL: select X, R.Z1, R.Z2, Y from R, S where R.Z1=S.Z1(+) and R.Z2=S.Z2(+); Nowe możliwości Oracle SQL inspirowane przez Standard SQL: select X, R.Z1, R.Z2, Y from R left join S on R.Z1=S.Z1 and R.Z2=S.Z2; select X, R.Z1, R.Z2, Y from R left outer join S on R.Z1=S.Z1 and R.Z2=S.Z2; A nawet: select X, Z1, Z2, Y from R natural left join S; select X, Z1, Z2, Y from R natural left outer join S; Bazy danych. Wykład 1 25

Złączenie (naturalne) zewnętrzne prawostronne Bazy danych. Wykład 1 26

Złączenie (naturalne) zewnętrzne prawostronne Jedyna możliwość w starszych wersjach Oracle SQL: select X, R.Z1, R.Z2, Y from R, S where R.Z1(+)=S.Z1 and R.Z2(+)=S.Z2; Nowe możliwości Oracle SQL inspirowane przez Standard SQL: select X, R.Z1, R.Z2, Y from R right join S on R.Z1=S.Z1 and R.Z2=S.Z2; select X, R.Z1, R.Z2, Y from R right outer join S on R.Z1=S.Z1 and R.Z2=S.Z2; A nawet: select X, Z1, Z2, Y from R natural right join S; select X, Z1, Z2, Y from R natural right outer join S; Bazy danych. Wykład 1 27

Złączenie (naturalne) zewnętrzne obustronne Bazy danych. Wykład 1 28

Złączenie (naturalne) zewnętrzne obustronne Jedyna możliwość w starszych wersjach Oracle SQL: select X, R.Z1, R.Z2, Y from R, S where R.Z1=S.Z1(+) and R.Z2=S.Z2(+) union select X, R.Z1, R.Z2, Y from R, S where R.Z1(+)=S.Z1 and R.Z2(+)=S.Z2; Nowe możliwości Oracle SQL inspirowane przez Standard SQL: select X, R.Z1, R.Z2, Y from R full join S on R.Z1=S.Z1 and R.Z2=S.Z2; select X, R.Z1, R.Z2, Y from R full outer join S on R.Z1=S.Z1 and R.Z2=S.Z2; A nawet: select X, Z1, Z2, Y from R natural full join S; select X, Z1, Z2, Y from R natural full outer join S; Bazy danych. Wykład 1 29

Uwaga o implementacji złączenia naturalnego w Oracle SQL Złączenie naturalne relacji w Oracle SQL odbywa się względem atrybutów współdzielonych o takich samych nazwach, gdy takie nie istnieją, to wykonany zostaje iloczyn kartezjański relacji. Dozwolone jest również wykorzystanie złączeń naturalnych do wykonania złączeń zewnętrznych relacji. Jednak aby uzyskać taki wynik, muszą istnieć w tych relacjach współdzielone atrybuty o takich samych nazwach, w przeciwnym razie zostanie wykonany iloczyn kartezjański. Bazy danych. Wykład 1 30

Dzielenie Niech relacje R i S mają nagłówki odpowiednio N(R)={X1,X2,...,Xn,Z1,Z2,...,Zk} i N(S)={Z1,Z2,...,Zk}, tzn. N(S) N(R). Relacja T = R S o nagłówku N(T)= {X1,X2,...,Xn} jest rezultatem dzielenia R przez S, jeżeli T zawiera dokładnie te krotki t, dla których spełniony jest warunek: R S R: R s = S R s [X1,X2,...,Xn] =1 ( krotki s S r R S : r(zi)=s(zi) i: 1 i k ) wówczas pojedyncza krotka t R S: t(x1,x2,...,xn). W Oracle SQL nie istnieje operator dzielenia. Bazy danych. Wykład 1 31

Dzielenie Bazy danych. Wykład 1 32

Przydatne własności Prawo łączności: iloczynu kartezjańskiego: (R S) T = R (S T) złączenia: (R S) T = R (S T) Prawo przemienności: iloczynu kartezjańskiego: R S = S R złączenia: R S = S R Bazy danych. Wykład 1 33

PRIORYTETY DZIAŁANIA OPERATORÓW NAJWYŻSZY NAJNIŻSZY PROJEKCJA SELEKCJA ILOCZYN KARTEZJAŃSKI ZŁĄCZENIE, DZIELENIE RÓŻNICA UNIA, PRZECIĘCIE Przykładowo: R[X,Y] gdzie Z=5 jest niepoprawne (wynik projekcji R[X,Y] nie ma już atrybutu Z). Poprawny zapis to: (R gdzie Z=5)[X,Y] Oczywiście niekiedy konieczne jest STOSOWANIE NAWIASÓW. Bazy danych. Wykład 1 34

Zupełny zbiór działań ZUPEŁNY ZBIÓR DZIAŁAŃ ALGEBRY RELACYJNYCH BAZ DANYCH tworzą: UNIA RÓŻNICA PRODUKT (ILOCZYN KARTEZJAŃSKI) PROJEKCJA (RZUTOWANIE) SELEKCJA ALIAS (PRZYPISANIE) Przy pomocy tych 6 działań można wyrazić pozostałe 3: PRZECIĘCIE (ILOCZYN), ZŁĄCZENIE, DZIELENIE. Bazy danych. Wykład 1 35

Bazy danych. Wykład 1 36