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

Podobne dokumenty