Model relacyjny Baza danych według definicji Codda to „ …zbiór
Transkrypt
Model relacyjny Baza danych według definicji Codda to „ …zbiór
Wykład II Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to „ …zbiór zmieniających się w czasie relacji [ . . .] o określonych stopniach”. artykuł „ A Relational Model Of Data for Large Shared Data Banks” To sposób prezentacji oraz manipulowania danymi, dotyczący: • struktury danych jako relacje • integralności danych zachowanej poprzez klucze główne, obce, zawężenie dziedziny, unikalność, ograniczenie wartości pustych • operowania danymi poprzez selekcję, projekcję, złączenia i operacje na zbiorach Obiekty relacyjne • • • • • • • • Relacja R – tabela Krotka t – wiersz ( rekord ) Atrybut A – kolumna ( pole ) Stopień relacji n – liczba atrybutów Klucz główny K – jednoznaczny identyfikator wiersza Dziedzina D – zbiór dopuszczalnych wartości danego atrybutu Schemat relacji R( A1, A2, ... ,An) Baza danych – zbiór relacji Relacja o schemacie R( A1, A2, ... ,An) na zbiorze dziedzin { D1, D2, ... ,Dn} jest zbiorem krotek r = { t1, t2, ... ,tn } postaci t = < v1, v2, ... ,vn>, gdzie vi , dla 0< i ≤ n należy do zbioru Di { NULL }, n jest stopniem relacji R, m jej liczebnością Własności obiektów relacyjnych: • nie istnieją powtarzające się krotki • krotki nie są uporządkowane ( ich kolejność nie ma znaczenia ) • wartości atrybutów są atomowe • w ramach relacji atrybuty posiadają jednoznaczne identyfikatory (nazwy) • w ramach bazy danych relacje nazwane mają jednoznaczne identyfikatory (nazwy) przykład: relacja FIGURY ( typ , kolor ) zbiór dopuszczalnych wartości dla atrybutu typ – { KOŁO, KWADRAT , TRÓJKĄT } zbiór dopuszczalnych wartości dla atrybutu kolor – { BIAŁY , CZERWONY , ZIELONY , CZARNY } 1 Wykład II możliwe krotki relacji FIGURY typ KWADRAT TRÓJKĄT ... KOŁO kolor BIAŁY ZIELONY ... CZARNY ile krotek może mieć relacja FIGURY ? Integralność danych relacyjnych • • • • reguła ( mechanizm ), która gwarantuje poprawność danych istnieją dwa sposoby definiowania, sprawdzania reguł integralnościowych • deklaratywne • proceduralne definiuje się na poziomie atrybutu lub relacji rodzaje to: • klucz główny ( PRIMARY KEY ) • klucz obcy ( FOREIGN KEY ) • unikalność ( UNIQUE ) • ograniczenie dziedziny ( CHECK ) • wartość pusta/niepusta ( NULL/NOT NULL ) Klucz kandydujący w relacji R • jest podzbiorem K zbioru atrybutów relacji R posiadający własność jednoznaczności i nieredukowalny • zawierający więcej niż jeden atrybut nazywa się kluczem złożonym, zaś zawierający dokładnie jeden atrybut – kluczem prostym W sytuacji, w której relacja posiada wiele kluczy kandydujących, jeden z nich powinien być wybrany jako klucz główny, pozostałe zaś określa się mianem kluczy alternatywnych Klucz obcy relacji R jest atrybutem lub zbiorem atrybutów, który wskazuje na klucz główny w innej relacji lub tej samej relacji Klucze na przykładzie relacji PRACOWNICY( #NR_AKT, NAZWISKO, STANOWISKO, KIEROWNIK, ID_DZIALU) relacji DZIALY(#ID_DZIALU, NAZWA, SIEDZIBA ) • • klucz główny relacji PRACOWNICY to NR_AKT klucz główny relacji DZIALY to ID_DZIALU 2 Wykład II • klucze obce w tabeli PRACOWNICY to KIEROWNIK wskazuje na klucz główny NR_AKT relacji PRACOWNICY ID_DZIAŁU wskazuje na klucz główny ID_DZIALU relacji DZIALY Integralność • • • referencyjna – zapewnia, że baza nie zawiera żadnych niedopuszczalnych wartości klucza obcego i narzuca je poprzez tzw. więzy referencyjne encji – odnosi się do pojedynczej relacji ( tabeli ) w której powinien istnieć klucz główny ( PRIMARY KEY ) i żaden jego składnik nie może akceptować wartości pustej atrybutu – wartości dla atrybutu są pobierane z odpowiedniej dziedziny • na każdy atrybut relacji można narzucić ograniczenia dotyczące: • dziedziny (określenie typu ) • niepowtarzalności wartości ( UNIQUE ) • wartość wymagana ( NOT NULL ) • ograniczenie dziedziny – warunek logiczny ( CHECK ) Podstawowe operacje algebry relacyjnej • • • • restrykcja ( selekcja ) rzutowanie ( projekcja ) złączenie • iloczyn kartezjański • theta złączenie operacje na zbiorach • suma • część wspólna ( przecięcie ) • różnica Restrykcja (”poziomy” podzbiór relacji poprzez podanie warunku na wybór krotek ) daje w wyniku relację składającą się ze wszystkich krotek, które spełniają określone warunki Notacja: σ<warunek selekcji> (<nazwa_relacji>) przykład: Pełne dane o pracownikach z działu 10 σ<id_dzialu=10> ( Pracownicy ) w języku SQL SELECT * FROM Pracownicy WHERE id_dzialu=10; 3 Wykład II Rzutowanie ( ”pionowy” podzbiór relacji poprzez wskazanie tworzących go atrybutów ) to ograniczenie relacji do wskazanych atrybutów Notacja: π< lista atrybutów> (<nazwa_relacji>) przykład: lista nazwisk i płac z relacji Pracownicy π< nazwisko, placa> ( Pracownicy) w języku SQL SELECT nazwisko, placa FROM Pracownicy; Złożenie operacji rzutowania i restrykcji przykład:lista nazwisk i płac pracowników z działu 10 z relacji Pracownicy π< nazwisko, placa> (σ<id_dzialu=10> ( Pracownicy) ) w języku SQL SELECT nazwisko, placa FROM Pracownicy WHERE id_dzialu=10; Iloczyn kartezjański dwóch relacji; R ( o stopniu nr i liczebności mr) oraz relacji S ( o stopniu ns i liczebności ms ) jest wynikową relacją o stopniu nr + ns i liczebności mr * ms zawierającą konkatenację wszystkich krotek należących do relacji R z wszystkimi krotkami należącymi do relacji S, Notacja: (<nazwa_relacji 1>) x (<nazwa_relacji 2>) przykład: Pełne dane o pracownikach i dzialach lub RxS ( Pracownicy ) x ( Dzialy ) w języku SQL SELECT * FROM Pracownicy CROSS JOIN Dzialy; lub stary zapis SELECT * FROM Pracownicy, Dzialy; 4 Wykład II Złączenia JOIN Theta – złączenie dwóch relacji, dla dowolnego operatora theta, stanowi restrykcję wykonaną na iloczynie kartezjańskim obu relacji, dla spełnionego warunku połączenia. Notacja: < nazwa_relacji1 > <warunek połaczenia> < warunek połączenia jest postaci nazwa_relacji2> Ai Ө Bj ( theta join ) Ai Bj są atrybutami połączenia Domena(Ai) = Domena(Bj) Ө jest jednym z operatorów { = , <> , < , <= , > , >= } Wśród theta – złączeń wyróżniamy równościowe, nierównościowe, zwrotne przykład: nazwiska pracowników i nazwy działów w których są zatrudnieni π nazwisko, nazwa( (pracownicy id_dzialu = id_dzialu dzialy) ) w języku SQL SELECT nazwisko, nazwa FROM Pracownicy JOIN Dzialy ON ( Pracownicy.id_dzialu = Dzialy.id_dzialu ); lub SELECT nazwisko, nazwa FROM Pracownicy JOIN Dzialy USING( id_dzialu); lub stary zapis SELECT nazwisko, nazwa FROM Pracownicy, Dzialy WHERE pracownicy.id_dzialu = dzialy.id_dzialu; Naturalne złączenia dwóch relacji R i S ( posiadający podzbiór o tych samych nazwach i typach atrybutów ), stanowi restrykcję wykonaną na iloczynie kartezjańskim obu relacji, dla wszystkich Ar = As, gdzie Ar należy do zbioru atrybutów relacji R, zaś As do relacji S. W języku SQL SELECT * FROM Pracownicy NATURAL JOIN Dzialy; Operacje na zbiorach Operacje sumy, przecięcia i różnicy dla dwóch relacji będą wykonalne jeśli występuje kompatybilność tych relacji ( w obu relacjach mamy po n-atrybutów ) 5 Wykład II Suma relacji dwóch zgodnych R i S jest w wyniku relacją zawierającą wszystkie krotki z obu relacji Notacja: R S w języku SQL SELECT Imiona, Nazwisko FROM Studenci WHERE rok=1 UNION SELECT Imie, Nazwisko FROM Aktorzy ORDER BY 2; Przecięcie ( iloczyn ) dwóch zgodnych relacji R i S jest w wyniku relacją zawierającą wszystkie krotki wspólne należące zarówno do relacji R jak i do S Notacja: R S w języku SQL SELECT Imiona FROM Studenci WHERE rok=1 INTERSECT SELECT upper(Imie) FROM Aktorzy WHERE kraj='PL' ; Różnica dwóch relacji wynikiem tej operacji, oznaczonej przez R – S jest relacja zawierająca wszystkie krotki, które występują w R i nie występują w S. Notacja: R- S w języku SQL SELECT upper(Imie) FROM Aktorzy WHERE kraj='USA' MINUS SELECT Imiona FROM Studenci WHERE rok=1; Wykorzystano Wykłady dr inż. Olga Siedlecka-Lamch - Bazy danych z roku 2012 http://wazniak.mimuw.edu.pl/images/0/04/BD-2st-1.2-w02.tresc-1.1.pdf 6