Relacyjny Model Danych
description
Transcript of Relacyjny Model Danych
Relacyjny Model Danych
Wykład 2Prowadzący: dr Paweł Drozda
dr P. Drozda
Definicja danych Relacja – dwuwymiarowa tabela, jedyna
struktura danych w modelu relacyjnym Każda relacja posiada atrybuty – kolumny.
Opisują dane umieszczane w relacji Schemat relacji – nazwa relacji wraz z
atrybutami Przykład schematu: Miasto (id, nazwa, id_regionu)
Krotki – wiersze relacji zawierające dane. Każdy atrybut ma swój odpowiednik w krotce
Cechy relacji
jednoznaczna nazwa relacji jednoznaczne nazwy kolumn (atrybutów)
relacji ten sam typ wartości w jednej kolumnie porządek kolumn w relacji nieistotny niedozwolone powtórzenia wierszy nieistotny porządek wierszy (krotek) wartości atomowe w polach relacji
dr P. Drozda
dr P. Drozda
Przykłady
Nr_indeksu Nazwisko Imię Adres
1234 Kowalski Jan Akacjowa 8
2134 Nowak Piotr Dębowa 4
4321 Maliniak Stefan Bukowa 4
3298 Grabowska Janina Brzozowa 1
Id_indeksu Id_indeksu Ocena Przedmiot
1234 (1234), (3214) 5 Bazy danych
3211 (3211), (4327) b. dobry Bazy danych
3211 (3211), (4327) b. dobry Bazy danych
STUDENCI
ZALICZENIA
spełnia reguły
nie spełnia reguł
dr P. Drozda
Definicja danych – klucze główne
każda relacja musi posiadać klucz główny jedna lub więcej kolumn identyfikujących
jednoznacznie każdy wiersz tabeli Klucz kandydujący – atrybut lub zbiór
atrybutów identyfikujących wiersze tabeli (musi być jednoznaczny i nie zawierać wartości null)
Klucz główny wybierany spośród kluczy kandydujących
dr P. Drozda
Definicja danych Dziedzina – zbiór wszystkich możliwych
wystąpień atrybutu (np. ocena_z_egzaminu wartości od 2 do 5 – dziedzina 2-5) – każdy atrybut posiada dziedzinę
Klucz obcy – kolumna bądź kolumny będące kluczem głównym w innej tabeli, sposób łączenia tabel (np. numer studenta w tabeli Studenci i w tabeli Zaliczenia)
Wartość null – nieznana informacja (np. brak numeru telefonu)
Definicja dziedziny i relacji – przykład(1)
DomainsNazwa Modułów: CharacterPoziomy: {1,2,3}Kody Kursów: CharacterNryPrac: IntegerStatusy: {L, SL, PL, Reader, Prof, HOD}NazwiskaPrac: Character
Relation: WykładowcyAttributesNrPrac: NryPracNazwiskoPrac: NazwiskaPracStatus: Statusy Primary Key: NrPrac
dr P. Drozda
Definicja dziedziny i relacji – przykład(2)
Relation: ModułyAttributesNazwaModułu: NazwyModułówPoziom: PoziomyKodKursu: KodyKursówNrPrac: NryPracPrimary Key: NazwaModułuForeign Key: NrPrac references
dr P. Drozda
dr P. Drozda
Przykład
Nr_indeksu Nazwisko Imię Adres
1234 Kowalski Jan Akacjowa 8
2134 Nowak Piotr Dębowa 4
4321 Maliniak Stefan Bukowa 4
3298 Grabowska Janina Brzozowa 1
Id_indeksu Ocena Przedmiot
1234 5 Bazy danych
3211 4 Bazy danych
3211 3 Matematyka
STUDENCI
ZALICZENIA
Klucz
główny
Klucz
obcy
Klucz główny
Ćwiczenie
dr P. Drozda
Nr_indeksu Nazwisko Imię Adres
1234 Kowalski Jan Akacjowa 8
2134 Nowak Piotr Dębowa 4
4321 Maliniak Stefan Bukowa 4
3298 Grabowska Janina Brzozowa 1
Dla danej relacji określ:AtrybutyKrotkiSkładowe jednej krotkiSchemat relacji Dziedzina dla każdego atrybutuInny równoważny sposób przedstawienia relacji
dr P. Drozda
Operowanie danymi
Algebra relacyjna – zbiór sześciu operatorów do wyszukiwania danych (selekcja, rzut, złączenie, suma, przecięcie, różnica)
Operacje dynamiczne na relacjach INSERT – wstawianie DELETE – usuwanie UPDATE – modyfikowanie
dr P. Drozda
Selekcja - ograniczenie Wydobywa wszystkie informacje z relacji z
interesującymi użytkownika danymi – nie bierze pod uwagę wszystkich krotek
Przykład: Restrict STUDENCI where imię = ‘JAN’odpowiednik w SQL: SELECT * FROM STUDENCI where imię=‘Jan’; Wynikiem powyższych zapytań jest relacja
Nr_indeksu Nazwisko Imię Adres
1234 Kowalski Jan Akacjowa 8
dr P. Drozda
Rzut – projekcja (1) ogranicza liczbę
atrybutów Przykład:
Pracownik Nazwisko Imię Płaca
1 Stefanek Michał 3000 zł
2 Dębek Jarosław 2340 zł
3 Kowalski Jan 4600 zł
PRACOWNICY
dr P. Drozda
Rzut (2) Wynik zapytania:
PROJECT Pracownicy (Nazwisko, Płaca)SELECT Nazwisko, Płaca from Pracownicy
jest następujący:Nazwisko Płaca
Stefanek 3000 zł
Dębek 2340 zł
Kowalski 4600 zł
dr P. Drozda
Operowanie danymi Złączenia – oparte na relacyjnym
operatorze iloczynu kartezjańskiego Typy złączeń
Iloczyn kartezjański Równozłączenie Złączenie naturalne Złączenia zewnętrzne
Lewostronne złączenie zewnętrzne Prawostronne złączenie zewnętrzne Obustronne złączenie zewnętrzne
dr P. Drozda
Iloczyn kartezjański
Powstaje poprzez połączenie dwóch relacji w jedną zawierającą wszystkie możliwe kombinacje wierszy tabel wejściowych
Przykład
Nr_indeksu Nazwisko Imię
1234 Kowalski Jan
6587 Małek Michał
1243 Nowak Piotr
nr_indeksu Ocena
3214 2
1234 5
dr P. Drozda
Iloczyn kartezjański Cd przykładu: relacja wynikowa
Nr_indeksu Nazwisko Imię nr_indeksu Ocena
1234 Kowalski Jan 3214 2
6587 Małek Michał 3214 2
1243 Nowak Piotr 3214 2
1234 Kowalski Jan 1234 5
6587 Małek Michał 1234 5
1243 Nowak Piotr 1234 5
dr P. Drozda
Równozłączenie
Nr_indeksu Nazwisko Imię
1234 Kowalski Jan
6587 Małek Michał
1243 Nowak Piotr
Iloczyn kartezjański dla którego dokonana jest selekcja poprzez wybór wierszy dla których wartość kluczy podstawowego i obcego są takie same
Przykład
nr_indeksu Przedmiot Ocena
6587 Bazy danych 2
1243 Filozofia 4
1243 Bazy danych 3
1234 Statystyka 5
dr P. Drozda
Równozłączenie cd przykładu: tabela wynikowa
Nr_indeksu Nazwisko Imię nr_indeksu Przedmiot Ocena
1234 Kowalski Jan 1234 Statystyka 5
6587 Małek Michał 6587 Bazy danych
2
1243 Nowak Piotr 1243 Filozofia 4
1243 Nowak Piotr 1243 Bazy danych
3
dr P. Drozda
Złączenie naturalne Podobne do równozłączenia – usuwa jedną z
kolumn po której relacje są łączone Dla poprzedniego przykładu tabel wynikowa
Nr_indeksu Nazwisko Imię Przedmiot Ocena
1234 Kowalski Jan Statystyka 5
6587 Małek Michał
Bazy danych 2
1243 Nowak Piotr Filozofia 4
1243 Nowak Piotr Bazy danych 3
dr P. Drozda
Złączenia zewnętrzne Stosowane gdy zachowane mają zostać
wszystkie wiersze jednej lub drugiej relacji (nawet gdy nie występują odpowiedniki w obu relacjach)
Nr_prac Nazwisko Imię
1 Golał Jan
6 Resko Paweł
3 Janik Tadeusz
4 Ferel Michał
IdPrzed Przedmiot Prowadzący
2 Bazy danych null
5 Filozofia 4
6 Analiza matematyczna
3
3 Statystyka 3
dr P. Drozda
Złączenie lewostronne Zachowuje nie pasujące wiersze z relacji
będącej pierwszym argumentem złączenia Wynik złączenia dla przykładu z
poprzedniego slajdu
Nr_prac Nazwisko Imię IdPrzed Przedmiot Prowadzący
1 Golał Jan null null null
6 Resko Paweł null null null
3 Janik Tadeusz 6 Analiza matematyczna
3
3 Janik Tadeusz 3 Statystyka 3
4 Ferel Michał 5 Filozofia 4
dr P. Drozda
Złączenie prawostronne Zachowuje nie pasujące wiersze z relacji
będącej drugim argumentem złączenia Wynik złączenia
Nr_prac Nazwisko Imię IdPrzed Przedmiot Prowadzący
null null null 2 Bazy danych null
3 Janik Tadeusz 6 Analiza matematyczna
3
3 Janik Tadeusz 3 Statystyka 3
4 Ferel Michał 5 Filozofia 4
dr P. Drozda
Złączenie obustronne Zachowuje nie pasujące wiersze z obydwu
relacji Wynik złączenia
Nr_prac Nazwisko Imię IdPrzed Przedmiot Prowadzący
null null null 2 Bazy danych null
3 Janik Tadeusz 6 Analiza matematyczna
3
3 Janik Tadeusz 3 Statystyka 3
4 Ferel Michał 5 Filozofia 4
1 Golał Jan null null 1
6 Resko Paweł null null 6
dr P. Drozda
Pozostałe operatory
stosowane dla zgodnych relacji- ta sama liczba argumentów w relacjach, ta sama dziedzina dla odpowiadających argumentów
analogicznie do algebry zbiorów
dr P. Drozda
Pozostałe operatory Przykład
Nr_prac Nazwisko Imię
1 Golał Jan
6 Resko Regina
7 Janik Tadeusz
9 Rewak Piotr
Nr_prac Nazwisko Imię
1 Golał Jan
2 Maser Paweł
3 Jawosz Magda
4 Ferel Michał
PRACOWNICY KIEROWNICY
dr P. Drozda
Pozostałe operatory
Suma
Nr_prac Nazwisko Imię
1 Golał Jan
2 Maser Paweł
3 Jawosz Magda
4 Ferel Michał
6 Resko Regina
7 Rewak Piotr
9 Janik Tadeusz
Nr_prac Nazwisko Imię
1 Golał Jan
Przecięcie
dr P. Drozda
Pozostałe operatory
Różnica A-B
Nr_prac Nazwisko Imię
2 Maser Paweł
3 Jawosz Magda
4 Ferel Michał
Nr_prac Nazwisko Imię
6 Resko Regina
7 Rewak Piotr
9 Janik Tadeusz
Różnica A-B
dr P. Drozda
Języki zapytań składanie operatorów w celu wydobycia
informacji z bazy danych Przykład – znaleźć wszystkie przedmioty
prowadzone przez Janika
Nr_prac Nazwisko Imię
1 Golał Jan
6 Resko Paweł
3 Janik Tadeusz
4 Ferel Michał
IdPrzed Przedmiot Prowadzący
2 Bazy danych null
5 Filozofia 4
6 Analiza matematyczna
3
3 Statystyka 3
PRACOWNICY PRZEDMIOTY
dr P. Drozda
Języki zapytań Przykład cd Proceduralny język zapytań
Join PRACOWNICY with PRZEDMIOTY -> R1SELECT R1 where Nazwisko=‘Janik’ -> R2
PROJECT R2(Przedmiot) ->R3 SQL
select Przedmiot from PRACOWNICY inner join PRZEDMIOTY on PRACOWNICY.Nr_prac = PRZEDMIOTY.Prowadzacy where Nazwisko=‘Janik’;
dr P. Drozda
Operacje dynamiczne INSERT (wart1, wart2, …) INTO tabela –
wstawia do tabeli wartości wart1, wart2, … Przykład
INSERT (10, ‘Banach’, ‘Jacek’) INTO PRACOWNICY spowoduje dodanie wiersza do relacji PRACOWNICY
DELETE tabela WITH warunek – usuwa z tabeli krotki określone w warunku Przykład
DELETE PRZEDMIOTY WITH Prowadzący = 3 – usunie krotki dotyczące analizy matematycznej i statystyki
dr P. Drozda
Operacje dynamiczne UPDATE tabela WHERE warunek SET
nazwaKolumny = wartosc – zmienia w krotkach określonych w warunku kolumnę nazwaKolumny na podaną wartość Przykład
UPDATE PRZEDMIOTY WHERE prowadzący=3 SET prowadzący=1 – zmienia prowadzącego przedmiotów analiza matematyczna i statystyka
dr P. Drozda
Integralność danych
Integralność danych zapewnia dokładne odbicie rzeczywistości w bazie danych
W modelu relacyjnym istnieją dwa rodzaje integralności wewnętrznej integralność encji integralność referencyjna
dr P. Drozda
Integralność encji Dotyczy kluczy głównych
Każda relacja musi mieć klucz główny Klucz główny musi być jednoznaczny i nie może zawierać wartości null (co
skutkuje jednoznacznością krotek w relacji) Przykład
kluczem głównym wtej relacji może byćNr_prac, nazwisko lub imię
Nr_prac Nazwisko Imię
1 Golał Jan
2 Resko Paweł
3 Janik Tadeusz
4 Ferel Michał
PRACOWNICY
dr P. Drozda
Integralność referencyjna Dotyczy kluczy obcych
dwie możliwości (w zależności od konkretnej bazy danych)
- Wartość klucza obcego musi odwoływać się do wartości klucza głównego w tabeli w bazie danych
- Wartość klucza obcego może być null - Wymuszenie istnienia odniesienia
każdego wiersza – parametr not null
dr P. Drozda
Integralność referencyjna Przykład
Nr_prac Nazwisko Imię
1 Golał Jan
6 Resko Paweł
3 Janik Tadeusz
4 Ferel Michał
IdPrzed Przedmiot Prowadzący
2 Bazy danych null
5 Filozofia 4
6 Analiza matematyczna
3
3 Statystyka 3
Integralność referencyjna zachowana, jeśli są dopuszczane wartości null klucza obcego (klucze obce mogą należeć do zbioru {1,3,4,6})
dr P. Drozda
Zachowanie integralności referencyjnej
Określenie więzów propagacji – określają co ma się stać z tabelą przy modyfikacji powiązanej tabeli Ograniczone usuwanie – usunięcie krotki z
kluczem głównym możliwe w momencie, gdy klucz główny nie ma wystąpień jako klucz obcyDla poprzedniego przykładu – z tabeli pracownicy można usunąć pracowników o numerach 1 i 6. Pozostali mogą zostać usunięci dopiero w momencie gdy zostaną usunięte odpowiednie krotki w powiązanej tabeli
dr P. Drozda
Zachowanie integralności referencyjnej
Kaskadowe usuwaniePrzy usunięciu wiersza z kluczem głównym zostają usunięte wszystkie wiersze z tym kluczem z relacji powiązanej Jeśli usuniemy z tabeli PRACOWNICY pracownika o
numerze 3 – zostaną usunięte Przedmioty o numerach 6 i 3 z tabeli PRZEDMIOTY
Wstaw null – przy usunięciu krotki z kluczem głównym zostają wstawione wartości null zamiast klucza obcego
Wstaw default – przy usuwaniu wstawia wartość domyślną
dr P. Drozda
Integralność dodatkowa
Definiowana przez użytkownika – specyficzna dla każdej bazy danych Przykład
Możemy wymusić, że każdy pracownik musi prowadzić jakieś zajęcia
CONSTRAINT (Project PRACOWNICY(Nr_prac)) – (Project PRZEDMIOTY(Prowadzący)) is empty