Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski. Relacyjne bazy danych. są podstawą zachodniej cywilizacji



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

1 Wstęp do modelu relacyjnego

Model relacyjny. Wykład II

Model relacyjny. Wykład II

Autor: Joanna Karwowska

RBD Relacyjne Bazy Danych

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

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Bazy danych. Informacje podstawowe

Projektowanie relacyjnych baz danych

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

Przestrzenne bazy danych Podstawy języka SQL

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

Bazy danych. Algebra relacji

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

Wykład 6. SQL praca z tabelami 3

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

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

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

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

Tadeusz Pankowski Definicja. Definicja

- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego

Wykład 2. Relacyjny model danych

Technologie baz danych

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

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

SZKOLENIE: Administrator baz danych. Cel szkolenia

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

Teoretyczne podstawy informatyki

S y s t e m y. B a z D a n y c h

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

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

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

Microsoft SQL Server Podstawy T-SQL

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

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

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

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

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Dr inż. Paweł Kasprowski

SQL Structured Query Language

Wprowadzenie do języka SQL

Oracle11g: Wprowadzenie do SQL

Relacyjny model danych. Relacyjny model danych

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

Relacyjny model danych

Technologie baz danych

3. Podzapytania, łączenie tabel i zapytań

Baza danych. Modele danych

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

Podstawy języka SQL cz. 2

RBD Relacyjne Bazy Danych Więzy realcji

Relacyjne bazy danych. Podstawy SQL

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

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

SQL (ang. Structured Query Language)

Język SQL. Rozdział 2. Proste zapytania

Język SQL podstawy zapytań

Wykład I. Wprowadzenie do baz danych

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

Paweł Rajba

I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych.

Złaczenia tablic: FROM, WHERE, JOIN

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

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

Bazy danych wykład drugi. Konrad Zdanowski

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Bazy danych wykład trzeci. Konrad Zdanowski

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

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

Wprowadzenie do baz danych

Rachunki relacji. Rachunki relacji. RRK Relacyjny Rachunek Krotek

Relacyjne bazy danych. Podstawy SQL

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Systemy baz danych. Notatki z wykładu

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

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

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

Agnieszka Ptaszek Michał Chojecki

Autor: Joanna Karwowska

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

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

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Wykład 5. SQL praca z tabelami 2

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

BAZY DANYCH Podstawowe pojęcia

Bazy danych i usługi sieciowe

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

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

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

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

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

Laboratorium Bazy danych SQL 2

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

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

Modelowanie konceptualne model EER

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Transkrypt:

Relacyjne bazy danych Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski 1 Model danych Relacyjne bazy danych są podstawą zachodniej cywilizacji 3 Model danych: Aspekt strukturalny: Zbiór struktur danych, zbiór operacji na tych strukturach, zbiór zależności między danymi. Aspekt semantyczny: Ustalenie znaczeń znaczenie (semantyka) struktur danych względem wiedzy o świecie rzeczywistym, określenie semantyki (wartości) operacji. Aspekt pragmatyczny: Określenie zasad korzystania z modelu danych w systemie bazy danych dla rozwiązywania konkretnych problemów (reprezentacja stanu systemu rzeczywistego, formułowanie zapytań, wykonywanie transakcji,...). 4

Baza danych Baza danych: jest logicznie spójnym zbiorem danych posiadających określoną strukturę, na których można wykonywać określone operacje (aspekt składniowy i operacyjny); reprezentuje pewien fragment świata rzeczywistego zwanego dziedziną przedmiotową (application domain); zmiany w dz.p. odzwierciedlane są w bazie danych (aspekt semantyczny); jest projektowana, tworzona i utrzymywana z punktu widzenia przydatności dla określonych zastosowań, którymi zainteresowana jest określona grupa użytkowników (aspekt pragmatyczny). 5 Relacyjny model danych E.F. Codd, "A relational model of data for large shared data banks", Communications of ACM 13 (3), 1970, ss. 377-387. Model danych (podstawa teoretyczna): struktura: dane proste (atomowe), krotki, tabele (relacje); operacje: wyszukiwanie: operacje algebry relacji, rachunki relacji operacje: definiowania, wyszukiwania, aktualizacji, administrowania (język SQL) ograniczenia (warunki spójności) (więzy integralności): zależności funkcyjne, zależności kluczowe (klucze główne), zależności referencyjne, zależności zawierania (klucze obce), ograniczenia na wartości (typy danych, dopuszczalne zbiory wartości, przedziały wartości),... 6 Relacyjne (SQL-owe) bazy danych Relacyjny model danych Relacyjne bazy danych = SQL-owe bazy danych wykraczają poza teoretyczny model relacyjny (włączają koncepcje obiektowości, XML, programowanie), SQL-owe bazy danych standard SQL-92 standard SQL:1999, SQL:2003, SQL:2006, SQL:2008 Najważniejsze relacyjne SZBD: Oracle 9i, 10g MS SQL Server 2000, 2005, 2008 DB2, Sybase, Interbase,... Inne systemy relacyjne dbase, Clipper, Xbase (stare systemy powszechne w Polsce) Access (Microsoft) MySQL, PostgreSQL (oprogramowanie wolne). 7 8

Relacyjny model danych Atrybut symbol, nazwa (np. Nazwisko, NrEwid, DataUr, Cena,...), U = {A 1,..., A n } zbiór atrybutów. Dziedzina atrybutu Dom(A), zbiór dopuszczalnych wartości atrybutu A. Wszystkie wartości są proste (atomowe). Wyróżniona wartość pusta NULL Dom(A). Krotka (wiersz, rekord) typu U r = [A 1 :a 1,..., A n :a n ], a i Dom(A i ), [ ] krotka pusta, r = (a 1,..., a n ) zapis uproszczony, gdy ustalona jest kolejność atrybutów, Tabela (relacja) R typu U skończony zbiór (wielozbiór mogą występować duplikaty!) krotek typu U. Formalnie: Krotka jest funkcją z U do V=Dom(A 1 )... Dom(A n ), r : U V r (A) i = r.a i Dom(A i ). 9 Algebra relacji Att nieskończony i przeliczalny zbiór atrybutów, Val zbiór wartości Algebrą relacji nazywamy następującą strukturę: AlgRel Att,Val = (Tab, {,, π X, δ X Y,, σ E }), gdzie: Tab zbiór wszystkich tabel utworzonych nad zbiorami Att i Val; suma mnogościowa tabel (tego samego typu), różnica mnogościowa tabel (tego samego typu), π X projekcja tabeli na zbiór atrybutów X, δ X Y przemianowanie tabeli poprzez zmianę nazw kolumn z X na Y, złączenie naturalne tabel o dowolnych typach, σ E selekcja tabeli według warunku selekcji E. W języku algebry relacji istnieją: nazwy tabel (symbole relacyjne), które interpretowane są jako tabele, nazwy operacji (będą one tożsame z symbolami stosowanymi powyżej). 10 Operacje na tabelach (relacjach) Dwie grupy operacji: 1. Operacje mnogościowe - wynikają z faktu, że tabela jest zbiorem: suma, różnica, przekrój. 2. Operacje relacyjne - wynikają z faktu, że tabela jest (wielo)zbiorem funkcji (krotek): projekcja, przemianowanie, złączenie, selekcja (+ pochodne: iloczyn kartezjański, złączenia zewnętrzne, podzielenie). Suma mnogościowa R, S tabele jednakowego typu U, Wynik tabela typu U. Suma mnogościowa (union): R S = { t t R t S}. SQL (UNION usuwa duplikaty, UNION ALL pozostawia duplikaty) tudent union select * from Pracownik Student Pracownik Student ALL Pracownik 11 12

R S Suma mnogościowa R S = { t t R t S} wynik jest zbiorem, nie zawiera duplikatów union R ALL S = { (k+j)*t k*t R j*t S} wynik jest wielozbiorem, zawiera duplikaty. (k*t R oznacza, że krotka t występuje k razy w tabeli R) Różnica mnogościowa R, S tabele jednakowego typu U, Wynik tabela typu U. Różnica mnogościowa (difference): R S = { t t R t S}. SQL (except usuwa duplikaty): except union all 13 14 Różnica mnogościowa Student Pracownik Student Pracownik S Różnica mnogościowa S R = { t t S t R} wynik jest zbiorem, nie zawiera duplikatów except SQL (except usuwa duplikaty): tudent except select * from Pracownik SQL (not exists): tudent as S where not exists (select * from Pracownik P where S.Nazwisko=P.Nazwisko and S.Kierunek = P.Kierunek) 15 R S LDup R = { k*t k*t S t R} wynik jest wielozbiorem, zawiera duplikaty where not exists( where R.A = S.A and S.B=R.B) 16

Przekrój R, S tabele jednakowego typu U, Wynik tabela typu U. Przekrój mnogościowy (intersection): R S = { t t R t S}. Przekrój Student Pracownik Student Pracownik SQL (intersect usuwa duplikaty): : intersect SQL (intersect usuwa duplikaty): tudent intersect select * from Pracownik 17 SQL (exists): tudent as S where exists (select * from Pracownik P where S.Nazwisko=P.Nazwisko and S.Kierunek = P.Kierunek) 18 Przekrój R R S = { t t R t S} wynik jest zbiorem, nie zawiera duplikatów intersect R S = S R S R LDup S = { k*t k*t R t S} wynik jest wielozbiorem, zawiera duplikaty where exists( where R.A=S.A and S.B=R.B) R S S R 19 Operacje na krotkach projekcja (rzut) krotki Przykład: π {A,C} ([A:a, B:b, C:c]) = [A:a, C:c] Definicja (projekcja krotki na zbiór atrybutów) Niech r będzie krotką typu U, i niech X będzie podzbiorem U, X U. Projekcją (rzutem, ograniczeniem) (ang. projection) krotki r na zbiór X, co oznaczamy π X (r), nazywamy krotkę typu X taką, która jest identyczna z krotką r na zbiorze atrybutów X, tj.: t = π X (r), jeśli dla każdego A X, t.a = r. A. (t.a oznacza wartość krotki t na atrybucie A). Gdy X jest zborem pustym (X = {}), to projekcja dowolnej krotki na X jest krotką pustą, tj. π {} (t) = [] Przykład: π {} ([A:a, B:b, C:c]) = []. 20

Operacje na krotkach przemianowanie (atrybutów w krotce) Przykład: δ A D ([A:a, B:b, C:c]) = [D:a, B:b, C:c]. Definicja (przemianowanie atrybutów w krotce) Niech r będzie krotką typu U, B atrybutem w U i C atrybutem nie należącym do U. Przemianowaniem atrybutu B na C w krotce r, co oznaczamy δ B C (r), nazywamy krotkę t powstałą z r przez zamianę atrybutu B na C, tj. taką krotkę t typu U {B} {C}, że: t.a = r. A, dla każdego A U {B}, t.c = r.b. Uogólnienie na ciągi atrybutów: Niech X=(B 1,, B k ) i Y=(C 1,, C k ) będą ciągami atrybutów, X U, Y U = {}. Przemianowanie atrybutów z X na odpowiadające im atrybuty z Y w krotce r definiujemy następująco: δ X Y (r) = δ B k Ck (... (δ B1 C1 (r))...). 21 Operacje na krotkach złączenie krotek Przykłady: [A:a,B:b,C:c] [D:d,E:e] = [A:a,B:b,C:c,D:d,E:e] krotki rozłącznych typów; [A:a,B:b,C:c] [B:b,E:e] = [A:a,B:b,C:c,E:e] krotki nierozłącznych typów; [A:a,B:b,C:c] [] = [A:a,B:b,C:c] złączenie z krotką pustą nie zmienia krotki; Definicja (złączenie krotek) Niech r będzie krotką typu X, a s krotką typu Y. Jeśli zbiór r s jest krotką, to nazywamy go złączeniem naturalnym r i s, i oznaczamy r s. Jeśli r s nie spełnia warunków krotki, to mówimy, że r i s są niezłączalne. [A:a, B:b, C:c] i [B:d, E:e] krotki niezłączalne! suma [A:a, B:b, C:c, B:d, E:e] nie jest krotką bo atrybut B występuje dwa razy raz z wartością 'b' i powtórnie z wartością 'd'. 22 Właściwości projekcji i złączenia krotek (5) π {} (t) = [] wynikiem projekcji krotki na zbiór pusty jest krotka pusta []; r r = r złączenie krotki z samą sobą nie zmienia krotki; r s = s t złączenie krotek jest przemienne; r (s t) = (r s) t złączenie krotek jest łączne; r [] = r krotka pusta jest elementem neutralnym dla złączenia; 23 Spełnianie warunku przez krotkę Krotki: r = [NrStud:2345, Kierunek: mat ] s = [NrStud:2346, Kierunek:NULL] Warunek: E = Kierunek = mat E = (Kierunek = mat or Kierunek = fiz ) and NrStud 2345 Spełnianie: E(r) = (Kierunek = mat )([NrStud:2345, Kierunek: mat ]) = TRUE E(s) TRUE, E(s) FALSE,? E(s) = UNKNOWN, (E(s) = NULL)! Uwaga: Występowanie wartości NULL powoduje, że działamy w logice trójwartościowej z wartościami logicznymi: {TRUE, FALSE, UNKNOWN} (lub {T, F, U}). Dowolne porównanie z NULL daje wartość logiczną UNKNOWN. t.aθnull = UNKNOWN, NULL θ x, daje UNKNOWN dla każdego x, również równego NULL. 24

Spełnianie warunku (logicznego) przez krotkę Definicja (warunek nad zbiorem atrybutów U) Niech U będzie zbiorem atrybutów, a Const zbiorem stałych (liczb, tekstów). Niech: A, A' U, c Const, θ {=,, <, <=, >, >=, like,... } operator porównania. Warunkiem nad U nazywamy wyrażenie logiczne E o następującej składni: E ::= A θ c A θ A' (E ) not E E or E E and E Krotka r typu U spełnia warunek E, E (r ) = TRUE, jeśli wyrażenie powstałe z E przez podstawienie za każde wystąpienie atrybutu A wartości r.a jest prawdziwe. Spełnianie warunku przez krotkę Przykłady (3): E := (Kierunek= mat or Kierunek= fiz ) (Kierunek= mat or Kierunek= fiz )([NrStud:2345, Kierunek: mat ]) = ( mat = mat or mat = fiz ) = TRUE (Kierunek= mat or Kierunek= fiz )([NrStud:2345, Kierunek: inf ]) = ( inf = mat or inf = fiz ) = FALSE (Kierunek= mat or Kierunek= fiz )([NrStud:2345, Kierunek:NULL]) = (NULL = mat or NULL = fiz ) = UNKNOWN 25 26 Operacje na tabelach (4) 1. Projekcja: π X (R) = {π X (r) r R } 2. Przemianowanie: δ X Y (R) := {δ X Y (r) r R } 3. Złączenie naturalne: R S = {r s r R, s S } 4. Selekcja: σ E (R ) = {r r R E (r ) = TRUE} Operacje na tabelach projekcja Projekcja: π X (R) = {π X (r) r R } 27 28

Projekcja Projekcja Szczególny przypadek: Problem duplikatów Czy (pielęgniarka, 1 500,00) powinna dwa razy występować w π {Stanowisko, Płaca} (Pracownik)? - tak, jeśli chcemy wyliczyć średnią płacę, - nie, jeśli sporządzamy wykaz stanowisk i płace na tych stanowiskach. π {} (R) = if R = {} then {} else {[]} 29 SQL: select Stanowisko, Płaca from Pracownik usuwanie duplikatów: select distinct Stanowisko, Płaca from Pracownik 30 Operacje na tabelach przemianowanie Przemianowanie (przykład) Przemianowanie: δ A B (R) := {δ A B (r) r R } Dla relacji: Studenci(IdStud, Nazwisko, Data_ur, Miejscowość) δ Miejscowość Miasto (Studenci) SQL: SELECT IdStud, Nazwisko, Data_ur, Miejscowość AS Miasto FROM Studenci 31 32

Operacje na tabelach złączenie (naturalne) Złączenie naturalne (c.d.) Złączenie (naturalne): R S = {r s r R, s S } >< 33 34 Złączenie naturalne (c.d.) Złączenie naturalne (c.d.) >< W złączenie naturalnym dwóch tabel R i S typów odpowiednio X i Y: atrybuty występujące w X mogą występować także w Y, relacja wynikowa zawiera sumę atrybutów z X i Y (bez powtórzeń), łączone są te krotki, które na wspólnych atrybutach mają jednakowe wartości. 36

Złączenie naturalne (c.d.) Złączenie naturalne tabel właściwości (4) Szczególne przypadki złączenia: R relacja typu X, S relacja typu Y. 1. Jeśli X = Y, to R S = R S dla tabel tego samego typu złączenie naturalne jest ich przekrojem. SQL: lub: select Nazwisko, P.Oddział, Ordynator from Pracownik P, Oddział O where P.Oddział = O.Oddział select Nazwisko, P.Oddział, Ordynator from Pracownik P join Oddział O on P.Oddział = O.Oddział 37 2. Jeśli X Y = {}, to R S = R S dla tabel o rozłącznych typach złączenie naturalne jest ich iloczynem kartezjańskim (każda krotka z R łączy się z każdą krotką z S). 3. R {[]} = R, (tzn. Y={}, S={[]}, uwaga {} = ) wynikiem złączenia tabeli R z tabelą zawierającą krotkę pustą (tabela typu pustego), jest tabela R. 4. R {} = {}, (tzn. S={}) wynikiem złączenia tabeli R z tabelą pustą (dowolnego typu), jest tabela pusta. 38 Złączenie właściwości (4) Ilustracja właściwości (4) Twierdzenie (właściwości złączenia naturalnego) R tabela typu U, wówczas: 1. R S = S R złączenie jest przemienne. 2. (R S) T = R (S T) złączenie jest łączne. 3. Jeśli X U, to R π X (R) = R złączenie tabeli R z dowolną swoją projekcją daje w wyniku R. 4. Jeśli X Y = U, to R π X (R) π Y (R) tabela jest zawarta w złączeniu dowolnych dwóch swoich projekcji, których suma typów jest równa typowi relacji. Zachodzi zawieranie a nie równość (!). Sprz IdKli IdTow Data a x 1 a x 2 a y 2 b y 3 Sprz π {IdKli,IdTow} (Sprz) π {IdKli,Data} (Sprz), krotka [a, y, 1] nie należy do Sprz! π IdKli,IdTow (Sprz) π IdKli,Data (Sprz) IdKli IdTow IdKli Data a x a 1 a y a 2 b y b 3 π IdKli,IdTow (Sprz) π IdKli,Data (Sprz) IdKli IdTow Data a x 1 a x 2 a y 1 a y 2 b y 3? 39 40

Ilustracja właściwości (4) Operacje na tabelach selekcja Sprz π IdKli,IdTow (Sprz) π IdKli,Data (Sprz) IdKli IdTow Data a x 1 a x 2 a y 2 b y 3 IdKli a a b IdTow x y y IdKli Data a 1 a 2 b 3 Selekcja: σ E (R ) = {r r R E (r ) = TRUE} π IdKli,IdTow (Sprz) π IdKli,Data (Sprz) IdKli IdTow Data a x 1 a x 2 a y 1 a y 2? Wynikiem selekcji jest zbiór tych krotek tabeli R, które spełniają warunek E. b y 3 41 42 Selekcja - przykład select * from Studenci where Data_ur > 1981.12.31 and Miejscowosc < > Poznań Pochodne operacje na tabelach iloczyn kartezjański Definicja: Jeśli R i S są tabelami rozłącznych typów, to ich złączenie naturalne nazywamy iloczynem kartezjańskim: R S = R S = {r s r R, s S }. Operacja iloczynu kartezjańskiego jest często poprzedzana operacją przemianowania, aby uzyskać rozłączne nazwy kolumn. Każda krotka z R jest łączona z każdą krotką z S. Jeśli R ma n R kolumn i m R wierszy, a S ma n S kolumn i m S wierszy, to: R S ma n R + n S kolumn i m R *m S wierszy. 43 44

SQL: lub Iloczyn kartezjański (c.d.) P P O O select P.Nazwisko, P.Oddział, O.Oddział, O.Ordynator from Pracownik P, Oddział O select P.*, O.* from Pracownik P, Oddział O Definicja (θ-złączenie) Złączenie warunkowe, θ-złączenie (θ-join) Niech R i S będą tabelami rozłącznych typów, odpowiednio X i Y, a E niech będzie warunkiem selekcji nad zbiorem atrybutów X Y. Złączeniem (warunkowym) tabel R i S, względem warunku E, nazywamy selekcję iloczynu kartezjańskiego R i S względem warunku E R E S = σ E (R S), 45 46 Złączenia zewnętrzne (OUTER JOIN) Złączenie zewnętrzne lewostronne LEFT OUTER JOIN (LOJ) Celem wprowadzenia złączenia zewnętrznego jest to, aby w relacji wynikowej zawarte były wszystkie krotki należące do jednego z argumentów (relacji leżącej po lewej bądź po prawej stronie operatora), albo do obydwu tych argumentów i to niezależnie od tego, czy dla danej krotki istnieje dopasowana do niej krotka należąca do drugiej relacji, czy nie. Wyróżniamy: 1. Złączenie zewnętrzne lewostronne - LEFT OUTER JOIN 2. Złączenie zewnętrzne prawostronne - RIGHT OUTER JOIN 3. Złączenie zewnętrzne pełne - FULL OUTER JOIN Definicja Niech R i S będą tabelami (rozłącznych) typów odpowiednio X i Y, a E niech będzie warunkiem selekcji nad zbiorem atrybutów X Y. Lewostronnym złączeniem zewnętrznym tabel R i S względem E, co oznaczamy, R + E S, nazywamy następującą tabelę typu X Y: R + E S = R E S (R π X (R E S)) Null(Y). Do wyniku należą więc wszystkie krotki lewego operanda (R) złączone bądź z dopasowanymi krotkami tabeli S, bądź z wartościami NULL, gdy brak dla nich w S dopasowanych krotek. 47 48

Złączenie zewnętrzne lewostronne - przykład Podaj dane o wszystkich studentów wraz z informacjami o zdanych przez nich egzaminach: Złączenie zewnętrzne prawostronne RIGHT OUTER JOIN (ROJ) Definicja Niech R i S będą tabelami (rozłącznych) typów odpowiednio X i Y, a E niech będzie warunkiem selekcji nad zbiorem atrybutów X Y. Prawostronnym złączeniem zewnętrznym tabel R i S względem E, co oznaczamy, R + E S, nazywamy następującą tabelę typu X Y: R + E S = R E S Null(X) (S π Y (R E S)). Do wyniku należą więc wszystkie krotki prawego operanda (S) złączone bądź z dopasowanymi krotkami tabeli R, bądź z wartościami NULL, gdy brak dla nich w R dopasowanych krotek. 49 50 Złączenie zewnętrzne prawostronne - przykład Złączenie zewnętrzne pełne FULL OUTER JOIN (FOJ) Definicja Niech R i S będą tabelami typów odpowiednio X i Y, a E niech będzie warunkiem selekcji nad zbiorem atrybutów X Y. Pełnym złączeniem zewnętrznym tabel R i S względem E, co oznaczamy, R + + E S, nazywamy sumę mnogościową złączeń lewo- i prawostronnego tabel R i S względem warunku E: R + + E S = R + E S R + E S 51 52

Złączenie zewnętrzne pełne -przykład Podzielenie (division) Podaj wszystkich studentów, wszystkich pracowników wraz z informacjami o promotorstwie prac magisterskich. Definicja Niech dane będą relacje R(U) i S(X) i niech X U. Podzieleniem relacji R(U) przez S(X) nazywamy relację R S, taką że: R S := {t π U X (R) s S. t s R}. 53 54 Podzielenie - przykład Podaj numery studentów, którzy zdawali egzamin z każdego przedmiotu. Podzielenie wyrażenie za pomocą innych operacji T1 π U X (R) T1 π NrStud (Egzamin) T2 π U X ((S T1) R) T2 π NrStud ((Przedmiot T1) Egzamin) T = T1 T2 T = T1 T2 Przedmiot T1 Przedmiot T1 Egzamin 55 56

Podzielenie wyrażenie za pomocą innych operacji Podzielenie (c.d) Podaj numery studentów, którzy zdawali egzamin z każdego przedmiotu. R(U) S(X) = {t π U X (R) s S (t s R)}. Inaczej: R(U) S(X) = π U X (R) π U X ((π U X (R) S) R) R(U) S(X) = {t π U X (R) count({s π X (R) t s R}) = count(s)}. Wyraża zapytanie typu dla-każdego Schemat rozumowania (z podwójną negacją): studenci, dla których nie istnieje przedmiot, z którego nie zdawali egzaminu select distinct E.NrStud from Egzamin E where not exists (select * from Przedmiot P where not exists (select * from Egzamin E1 where E1.NrPrzed = P.NrPrzed and E1.NrStud = E.NrStud))) 57 58 Podzielenie (c.d) {e.nrstud Egzamin(E) p(przedmiot(p) e1 (Egzamin(e1) e1.nrprzed=p.nrprzed e1.nrstud= e.nrstud))} Zastąpienie : x(ϕ ϕ ) ( x(ϕ ϕ ϕ )) {e.nrstud Egzamin(E) p(przedmiot(p) e1 (Egzamin(e1) e1.nrprzed=p.nrprzed e1.nrstud= e.nrstud))} select E.NrStud from Egzamin E where not exists (select * from Przedmiot P where not exists (select * from Egzamin E1 where E1.NrPrzed = P.NrPrzed and E1.NrStud = E.NrStud))) 59