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

Podobne dokumenty