wyk2

advertisement
Relacyjny Model Danych
Wykład 2
Prowadzący: dr Paweł 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
dr P. Drozda
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
Przykłady
STUDENCI
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
spełnia reguły
ZALICZENIA
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
dr P. Drozda
nie spełnia reguł
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)
dr P. Drozda
Definicja dziedziny i relacji – przykład(1)
Domains
Nazwa Modułów: Character
Poziomy: {1,2,3}
Kody Kursów: Character
NryPrac: Integer
Statusy: {L, SL, PL, Reader, Prof, HOD}
NazwiskaPrac: Character
Relation: Wykładowcy
Attributes
NrPrac: NryPrac
NazwiskoPrac: NazwiskaPrac
Status: Statusy
Primary Key: NrPrac
dr P. Drozda
Definicja dziedziny i relacji – przykład(2)
Relation: Moduły
Attributes
NazwaModułu: NazwyModułów
Poziom: Poziomy
KodKursu: KodyKursów
NrPrac: NryPrac
Primary Key: NazwaModułu
Foreign Key: NrPrac references
dr P. Drozda
Przykład
STUDENCI
Nr_indeksu
Nazwisko
Imię
Adres
Klucz
1234
Kowalski
Jan
Akacjowa 8
główny
2134
Nowak
Piotr
Dębowa 4
4321
Maliniak
Stefan
Bukowa 4
3298
Grabowska
Janina
Brzozowa 1
Klucz główny
Klucz
obcy
ZALICZENIA
Id_indeksu Ocena
Przedmiot
1234
5
Bazy danych
3211
4
Bazy danych
3211
3
Matematyka
dr P. Drozda
Ćwiczenie
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:
Atrybuty
Krotki
Składowe jednej krotki
Schemat relacji
Dziedzina dla każdego atrybutu
Inny 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:
PRACOWNICY
Pracownik
Nazwisko
Imię
Płaca
1
Stefanek
Michał
3000 zł
2
Dębek
Jarosław
2340 zł
3
Kowalski
Jan
4600 zł
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ę
nr_indeksu
Ocena
1234
Kowalski
Jan
3214
2
6587
Małek
Michał
1234
5
1243
Nowak
Piotr
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
 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
Nazwisko
Imię
nr_indeksu
Przedmiot
Ocena
1234
Kowalski
Jan
6587
Bazy danych
2
6587
Małek
Michał
1243
Filozofia
4
1243
Nowak
Piotr
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ąc
y
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ąc
y
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ąc
y
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ąc
y
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
PRACOWNICY
KIEROWNICY
Nr_prac
Nazwisko
Imię
Nr_prac
Nazwisko
Imię
1
Golał
Jan
1
Golał
Jan
2
Maser
Paweł
6
Resko
Regina
3
Jawosz
Magda
7
Janik
Tadeusz
4
Ferel
Michał
9
Rewak
Piotr
dr P. Drozda
Pozostałe operatory
Przecięcie
Suma
Nr_prac
Nazwisko
Imię
Nr_prac
Nazwisko
Imię
1
Golał
Jan
1
Golał
Jan
2
Maser
Paweł
3
Jawosz
Magda
4
Ferel
Michał
6
Resko
Regina
7
Rewak
Piotr
9
Janik
Tadeusz
dr P. Drozda
Pozostałe operatory
Różnica A-B
Różnica A-B
Nr_prac
Nazwisko
Imię
Nr_prac
Nazwisko
Imię
2
Maser
Paweł
6
Resko
Regina
3
Jawosz
Magda
7
Rewak
Piotr
4
Ferel
Michał
9
Janik
Tadeusz
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
PRACOWNICY
PRZEDMIOTY
Nr_prac
Nazwisko
Imię
IdPrzed
Przedmiot
Prowadząc
y
1
Golał
Jan
2
Bazy danych
null
6
Resko
Paweł
5
Filozofia
4
3
Janik
Tadeusz
6
Analiza matematyczna
3
4
Ferel
Michał
3
Statystyka
3
dr P. Drozda
Języki zapytań
 Przykład cd
 Proceduralny język zapytań
Join PRACOWNICY with PRZEDMIOTY -> R1
SELECT 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 w
tej relacji może być
Nr_prac, nazwisko lub imię
PRACOWNICY
Nr_prac
Nazwisko
Imię
1
Golał
Jan
2
Resko
Paweł
3
Janik
Tadeusz
4
Ferel
Michał
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ę
IdPrzed
Przedmiot
Prowadząc
y
1
Golał
Jan
2
Bazy danych
null
6
Resko
Paweł
5
Filozofia
4
3
Janik
Tadeusz
6
Analiza matematyczna
3
4
Ferel
Michał
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 obcy
Dla 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 usuwanie
Przy 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
dr P. Drozda
Download