A Relational Model Of Data for Large Shared Data Banks
Transkrypt
A Relational Model Of Data for Large Shared Data Banks
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 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 ( weryfikuje SZBD ) 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 ) 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; 2 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_relacji1>) x (<nazwa_relacji 2>) lub RxS przykład: Pełne dane o pracownikach i działach ( Pracownicy ) x ( Dzialy ) w języku SQL SELECT * FROM Pracownicy CROSS JOIN Dzialy; lub stary zapis SELECT * FROM Pracownicy, Dzialy; 3 Wykład II Złączenia JOIN Theta – złączenie dwóch relacji R i S , dla dowolnego operatora porównania theta, stanowi restrykcję wykonaną na iloczynie kartezjańskim obu relacji, dla spełnionego warunku AR Ө Bs, gdzie AR należy do zbioru atrybutów relacji R, zaś Bs do relacji S Notacja: < nazwa_relacji1 > <warunek połaczenia> < nazwa_relacji2> Ө 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 ) 4 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 stanowisko FROM Pracownicy WHERE id_dzialu = 20 UNION SELECT stanowisko FROM Pracownicy WHERE id_dzialu =30; 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 stanowisko FROM Pracownicy WHERE id_dzialu = 20 INTERSECT SELECT stanowisko FROM Pracownicy WHERE id_dzialu = 30; 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. w języku SQL SELECT stanowisko FROM pracownicy WHERE id_dzialu=30 MINUS SELECT stanowisko FROM pracownicy WHERE id_dzialu IN (40,50,60); Algebra relacji umożliwia tworzenie dowolnie złożonych wyrażeń przez zastosowanie operatorów dla danych( wejściowych ) relacji albo wyników pośrednich Lista możliwych zastosowań takich wyrażeń: wyszukiwanie danych aktualizacja danych definiowanie o relacji wirtualnych ( perspektyw , migawek ) o zasad bezpieczeństwa ( autoryzacji ) o wymagań stabilności (współbieżnego przetwarzania ) o reguł integralności danych 5 Wykład II Wartość NULL ( nieznana ) • może dotyczyć każdego typu danych: liczb, tekstów ( o skończonej liczbie znaków ), dat i typów multimedialnych • nie jest to wartość ZERO dla liczb, czy łańcuch spacji dla tekstów, po prostu NULL • podstawowe wartości logiczne prawda, fałsz zostają rozszerzone o trzecią wartość UNKNOWN tabela wartości dla operatora OR OR TRUE FALSE NULL TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE NULL TRUE NULL NULL tabela wartości dla operatora AND AND TRUE FALSE NULL TRUE FALSE NULL TRUE FALSE NULL FALSE FALSE FALSE NULL FALSE NULL FALSE NULL TRUE NULL tabela wartości dla operatora NOT NOT TRUE FALSE • specjalne operatory do budowania warunków logicznych w wyszukiwaniu wartości pustych IS NULL ; IS NOT NULL Przykłady: SELECT nazwisko FROM Studenci WHERE gr_dziekan IS NULL ; SELECT Count( * ) FROM Studenci WHERE rok IS NOT NULL ; pułapki ; działania arytmetyczne z udziałem wartości NULL wynik wyrażenia ( 10 + NULL ) to NULL • funkcje konwersji wartości NULL w Oracle Nvl ( arg1 , arg2 ) jeśli wartość arg1 jest NULL to funkcja przyjmuje wartość arg2 6 Wykład II Przykład: SELECT nazwa, count (nr_akt ), sum(placa + nvl( dod_funkcyjny, 0) ) FROM Pracownicy FULL JOIN Dzialy USING ( id_dzialu ) GROUP BY nazwa ; błędne ( nieskuteczne) zapisy warunków logicznych SELECT * FROM Pracownicy WHERE dod_funkcyjny <> NULL; Postulaty Codd'a dla relacyjnej bazy danych (1985 ) 1. Postulat informacyjny 2. Postulat dostępu 3. Postulat wartości NULL 4. Postulat słownika danych 5. Postulat pełnego języka danych 6. Postulat modyfikowania danych przez perspektywę 7. Postulat modyfikowania danych na wysokim poziomie abstrakcji 8. Fizyczna niezależność danych 9. Logiczna niezależność danych 10. Niezależność więzów spójności 11. Niezależność dystrybucyjna 12. Zabezpieczenie przed operacjami na niższych poziomach abstrakcji 7