PLAN WYKŁADU Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna BAZY DANYCH Wykład 2 dr inż. Agnieszka Bołtuć MODEL DANYCH Model danych jest zbiorem ogólnych zasad posługiwania się danymi. Definiuje on: struktury danych, operacje na danych, ograniczenia integralnościowe. HISTORIA powstał dzięki jednej osobie E.F.Coddowi, która w 1970 roku opublikowała pracę będącą fundamentem pod omawiany model danych, w latach 1968-1988 opublikował ponad 40 prac na temat relacyjnego modelu danych, prace nad relacyjnym modelem danych były prowadzone przez niego ze względu na: model relacyjny 1 2 3 dane we wcześniejszych modelach były traktowane w niezdyscyplinowany sposób, słaby poziom niezależności danych od aplikacji, słaba wydajność tworzenia oprogramowania. 1
POSTULATY CODDA (1985) POSTULATY CODDA postulat informacyjny dane są reprezentowane jedynie za pomocą tabel wartości, postulat dostępu każda wartość w bazie danych jest dostępna za pomocą nazwy tabeli, atrybutu oraz wartości klucza głównego, postulat wartości NULL dostępna jest specjalna wartość NULL dla reprezentacji wartości nieokreślonej i nieznanej, inna od wszystkich pustych i podlegająca przetwarzaniu, postulat słownika danych informacje o obiektach bazy danych tworzących schemat bazy danych są na poziomie logicznym zgrupowane w tabele i dostępne w taki sam sposób jak każde inne dane, postulat pełnego języka danych system musi dostarczać pełnego języka przetwarzania danych, który: charakteryzuje się liniową składnią, może być używany zarówno w trybie interaktywnym, jak i w obrębie programów aplikacyjnych, obsługuje operacje definiowania danych i perspektyw, operacje manipulowania danymi, ograniczenia związane z bezpieczeństwem i integralnością oraz operacje zarządzania transakcjami, POSTULATY CODDA postulat modyfikowania bazy danych przez perspektywy - system musi umożliwiać modyfikowanie perspektyw, o ile jest ono semantycznie realizowane, postulat modyfikowalności danych na wysokim poziomie abstrakcji system musi umożliwiać operacje modyfikacji danych, których argumentami są tabele, postulat fizycznej niezależności danych zmiany fizycznej reprezentacji danych i organizacji dostępu nie wpływają na aplikacje, postulat logicznej niezależności danych zmiany wartości w tabelach nie wpływają na aplikacje, POSTULATY CODDA postulat niezależności więzów spójności więzy spójności są definiowane w języku bazy i nie zależą od aplikacji, postulat niezależności dystrybucyjnej działanie aplikacji nie zależy od rozmieszczenia i rozproszenia bazy, postulat bezpieczeństwa względem operacji na niższych poziomach abstrakcji operacje niskiego poziomu nie mogą naruszać modelu relacyjnego i więzów spójności. 2
MODEL RELACYJNY STRUKTURY DANYCH struktura danych jest relacją, manipulacje na danych odbywają się poprzez: selekcję, projekcję, połączenie i operacje na zbiorach, integralność danych zachowana jest poprzez: klucz podstawowy, klucz obcy, zawężenie dziedziny, unikalność wartości, możliwość nadawania wartości pustych. jedyną strukturą danych w relacyjnej bazie danych jest relacja (R) - dwuwymiarowa tabela, kolumny tabeli atrybuty (A), wiersze tabeli krotki (t), liczba atrybutów w tabeli stopień tabeli (n), liczba krotek w tabeli liczebność tabeli (m), klucz główny jednoznaczny identyfikator w tabeli, baza danych zbiór relacji, dziedzina (D) zbiór dopuszczalnych wartości, schemat relacji R(A 1, A 2,, A n ), schemat bazy danych zbiór schematów relacji. STRUKTURY DANYCH rejestracja kolor marka dziedziny RELACJA klucz główny liczebność relacji relacja samochody atrybuty krotki Relacja r o schemacie R(A1,A2,...,An), oznaczona r(r), na zbiorze dziedzin {D1,D2,...,Dn} jest zbiorem krotek r = {t1, t2,..., tm} postaci t =< v1, v2,..., vn >, będących uporządkowaną listą, gdzie vi, dla 0 < i n należy do zbioru Di {NULL}, n jest stopniem relacji R, zaś m jej liczebnością. stopień relacji 3
WŁASNOŚCI RELACJI każda relacja ma jednoznaczną nazwę w ramach bazy danych, w ramach jednej relacji atrybuty mają jednoznaczne nazwy, wszystkie wartości w kolumnie są tego samego typu (zdefiniowane w tej samej dziedzinie), kolejność kolumn w relacji nie ma znaczenia, w relacji nie istnieją powtarzające się krotki, kolejność krotek nie ma znaczenia, każde pole na przecięciu kolumna/wiersz ma wartość atomową. INTEGRALNOŚĆ DANYCH Każda relacja może posiadać zdefiniowane ograniczenia integralnościowe, które muszą spełniać zawarte w niej dane. Wyróżniamy ograniczenia: klucz podstawowy (PRIMARY KEY), klucz obcy (FOREIGN KEY), unikalność (UNIQUE), zawężenie domeny/dziedziny (CHECK), wartość pusta/niepusta (NULL/NOT NULL). KLUCZ KANDYDUJĄCY klucz kandydujący w relacji R jest podzbiorem K zbioru atrybutów relacji R, mającym własność jednoznaczności oraz nieredukowalności, klucz kandydujący to kolumna lub zbiór kolumn, które mogą stanowić jednoznaczny identyfikator wierszy w tabeli, w jednej relacji może być wiele kluczy kandydujących, KLUCZ GŁÓWNY klucz główny jest wybierany ze zbioru kluczy kandydujących, pozostałe nazywamy alternatywnymi, klucz główny zawierający jeden atrybut nazywamy prostym, zawierający wiele atrybutów złożonym, klucz główny jest jednoznaczny i nie może mieć wartości NULL. przykłady: PESEL, NIP, nr dowodu, nr paszportu. 4
PRZYKŁAD KLUCZ OBCY Istnieje relacja podstawowa R2. Klucz obcy relacji R2 jest to podzbiór FK, zbioru atrybutów R2, taki że: relacja samochody klucz alternatywny? relacja wypadki istnieje relacja R1 (relacje R1 i R2 nie muszą być różne) z kluczem kandydującym CK, i w każdej chwili każda wartość FK w aktualnej wartości relacji R2 jest taka sama, jak wartość CK w pewnej krotce aktualnej wartości relacji R1, Klucz obcy jest kolumną lub grupą kolumn w tabeli, która czerpie swoje wartości z tej samej dziedziny co klucz główny tabeli powiązanej z nią w bazie danych. klucz główny klucz obcy klucz główny POZOSTAŁE OGRANICZENIA unikalność (UNIQUE) niepowtarzalność wartości, zawężenie domeny/dziedziny (CHECK) - zbiór wartości domeny atrybutu może być zawężony przez wyrażenie logiczne do pewnego podzbioru: przedziału lub wyliczeniowej listy wartości, np. kolor oczu: szary, niebieski, zielony, piwny; cena: wartości dodatnie, wiek: od 0 do 120, wartość pusta/niepusta (NULL/NOT NULL) dopuszczanie/niedopuszczanie wartości pustej. INTEGRALNOŚĆ DANYCH integralność encji każda tabela musi mieć klucz główny, a każda kolumna lub kolumny wybrane jako klucz powinny być jednoznaczne i nie zawierać wartości null, integralność referencyjna - baza nie zawiera żadnych niedopuszczalnych wartości klucza obcego i narzuca je poprzez tzw. więzy propagacji, dodatkowa gdy nie możemy wyrazić wszystkich aspektów integralności należących do konkretnej aplikacji, definiujemy więzy. 5
ALGEBRA RELACYJNA Algebra relacyjna jest zbiorem operatorów: restrykcja (selekcja) rzut (projekcja) złączenie suma przecięcie różnica iloczyn kartezjański iloraz SELEKCJA Daje w wyniku relację składającą się ze wszystkich krotek ze wskazanej relacji, które spełniają określone warunki. Jako argument bierze jedną relację i w wyniku produkuje jedną relację. Może być uważana za poziomą maszynę do cięcie, gdyż wydobywa z relacji wejściowe wiersze spełniające warunek. selekcja SELEKCJA Notacja: σ <warunki> (< nazwa relacji >) SELEKCJA - PRZYKŁADY σ rocznik= 1980 (samochody) Warunek restrykcji ma postać < atrybut >< operator relacyjny >< literał > lub < atrybut >< operator relacyjny >< atrybut > Warunki są łączone operatorami logicznymi AND lub OR Właściwości: operacja jest komutatywna. σ <war1> (σ <war2> (R)) = σ <war2> (σ <war1> (R)) SELECT * FROM samochody WHERE rocznik=1980; σ rocznik= 1980 AND kolor= biały AND marka= mercedes (samochody) SELECT * FROM samochody WHERE rocznik=1980 AND kolor= biały AND marka= mercedes ; 6
RZUT Daje w wyniku relację składającą się ze wszystkich krotek, które pozostały jako krotki w danej relacji po usunięciu z niej wskazanych atrybutów. Jako argument bierze jedną relację i w wyniku produkuje jedną relację. Może być uważana za pionową maszynę do cięcie, gdyż tworzy na wyjściu relację będącą podzbiorem kolumn z relacji wejściowej. RZUT Notacja: π <atrybuty> (< nazwa relacji >) Właściwości: operacja nie jest komutatywna. Składanie operacji projekcji możliwe jest jedynie wtedy kiedy lista1 lista2: π <lista1> (π <lista2> (R)) = π <lista1> (R) rzut RZUT π rejestracja (samochody) SELECT rejestracja FROM samochody; π rejestracja, marka, kolor (samochody) SELECT rejestracja, marka, kolor FROM samochody; ZŁĄCZENIE Daje relację składającą się ze wszystkich możliwych krotek, będących kombinacjami dwóch krotek, po jednej z każdej wskazanej relacji, takich, że dwie krotki dające wkład do którejkolwiek kombinacji mają tę sama wartość wspólnego atrybutu (atrybutów) tych dwu relacji. Jako argument bierze dwie relacje i w wyniku produkuje jedną relację, Najpowszechniejsze złączenie to złączenie naturalne będące rozszerzeniem równozłączenia. 7
RÓWNOZŁĄCZENIE Jest iloczynem kartezjańskim, po którym jest wykonywana restrykcja, Łączone są dwie tabele, jednak tylko dla wierszy, w których wartości w kolumnach złączenia są takie same, Domyślne kolumny złączenia tworzą klucz główny i obcy tabel. R1 R2 R3 A1 A B C A2 Y A3 Y Z I A4 J K równozłączenie SELECT A1,A2 FROM R1 JOIN R2 ON R1.A2=R2.A3; A1 A2 A3 A4 A I B I C Y Y J ZŁĄCZENIE NATURALNE Jest iloczynem kartezjańskim, po którym jest wykonywana restrykcja oraz rzut, w którym nie bierze się pod uwagę powtórzeń kolumn złączenia. R1 R2 R3 A1 A B C A2 Y A3 Y Z I J A4 K zł. naturalne SELECT A1,A2 FROM R1 NATURAL JOIN R2; A1 A2 A4 A I B I C Y J ILOCZYN KARTEZJAŃSKI Daje relację składającą się ze wszystkich możliwych krotek, będących kombinacjami dwóch krotek, po jednej z każdej wskazanej relacji, Jako argument bierze dwie relacje i w wyniku produkuje jedną relację, Jeżeli relacja R ma N krotek, a relacja S ma M krotek, to relacja wynikowa Q będzie miała N*M krotek ILOCZYN KARTEZJAŃSKI R S A B C Y iloczyn Q A A Y B B Y C C Y iloczyn 8
SUMA Daje w wyniku relację składającą się ze wszystkich krotek, które występują w jednej lub obu wskazanych relacjach. Jako argumenty bierze dwie zgodne (tabele mają taką samą strukturę te same kolumny określone w tych samych dziedzinach) relacje R i S i w wyniku produkuje jedną relację R S. Suma jest operacją komutatywną R S = S R. suma SUMA Pracownicy_Polska Pracownicy_Francja Jerzy Tamborski Katarzyna Ferenc Paweł Koc Matylda Modra Artur Oniśko Paweł Koc Matylda Modra Artur Oniśko Jerzy Tamborski Katarzyna Ferenc SELECT FROM Pracownicy_Polska UNION SELECT FROM Pracownicy_Francja; PRZECIĘCIE Daje w wyniku relację składającą się ze wszystkich krotek, występujących w obu wskazanych relacjach, Jako argumenty bierze dwie zgodne (tabele mają taką samą strukturę te same kolumny określone w tych samych dziedzinach) relacje R i S i w wyniku produkuje jedną relację R S, Przecięcie jest operacją komutatywną. przecięcie PRZECIĘCIE Pracownicy_Polska Jerzy Tamborski Katarzyna Ferenc Pracownicy_Francja Paweł Koc Matylda Modra Artur Oniśko SELECT FROM Pracownicy_Polska INTERSECT SELECT FROM Pracownicy_Francja; 9
RÓŻNICA RÓŻNICA Daje w wyniku relację składającą się ze wszystkich krotek występujących w jednej ze wskazanych relacji, a nie występujących w drugiej, Jako argumenty bierze dwie zgodne relacje R i S i w wyniku produkuje jedną relację R - S, Różnica nie jest operacją komutatywną. Pracownicy_Polska Jerzy Tamborski Katarzyna Ferenc Pracownicy_Francja Paweł Koc Matylda Modra Artur Oniśko Jerzy Tamborski Katarzyna Ferenc różnica SELECT FROM Pracownicy_Polska MINUS SELECT FROM Pracownicy_Francja; ILORAZ ILORAZ Bierze dwie relacje, jedną binarną, a drugą unarną i daje w wyniku relację składającą się ze wszystkich wartości jednego atrybutu relacji binarnej, które zgadzają się (pod względem wartości tego drugiego atrybutu) ze wszystkimi wartościami relacji unarnej. Jako argument bierze dwie relacje i w wyniku produkuje jedną relację. Pracownicy_Polska staż_pracy 3 Jerzy Tamborski 4 3 Katarzyna Ferenc 11 Anna Piwot 7 Pracownicy_staż R1 3 iloraz 10
WYKŁAD PRZYGOTOWANO NA PODSTAWIE C. J. Date, Wprowadzenie do systemów baz danych, WNT, Warszawa, 2000, http://wazniak.mimuw.edu.pl/index.php?title=bazy_ danych P. Beynon-Davies, Systemy baz danych, WNT, 2003. 11