Download - Relacyjny Model Danych
![Page 1: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/1.jpg)
Relacyjny Model Danych
Wykład 2Prowadzący: dr Paweł Drozda
![Page 2: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/2.jpg)
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
![Page 3: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/3.jpg)
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
![Page 4: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/4.jpg)
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ł
![Page 5: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/5.jpg)
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
![Page 6: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/6.jpg)
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)
![Page 7: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/7.jpg)
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
![Page 8: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/8.jpg)
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
![Page 9: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/9.jpg)
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
![Page 10: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/10.jpg)
Ć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
![Page 11: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/11.jpg)
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
![Page 12: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/12.jpg)
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
![Page 13: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/13.jpg)
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
![Page 14: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/14.jpg)
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ł
![Page 15: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/15.jpg)
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
![Page 16: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/16.jpg)
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
![Page 17: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/17.jpg)
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
![Page 18: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/18.jpg)
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
![Page 19: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/19.jpg)
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
![Page 20: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/20.jpg)
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
![Page 21: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/21.jpg)
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
![Page 22: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/22.jpg)
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
![Page 23: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/23.jpg)
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
![Page 24: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/24.jpg)
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
![Page 25: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/25.jpg)
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
![Page 26: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/26.jpg)
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
![Page 27: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/27.jpg)
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
![Page 28: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/28.jpg)
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
![Page 29: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/29.jpg)
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
![Page 30: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/30.jpg)
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’;
![Page 31: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/31.jpg)
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
![Page 32: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/32.jpg)
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
![Page 33: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/33.jpg)
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
![Page 34: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/34.jpg)
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
![Page 35: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/35.jpg)
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
![Page 36: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/36.jpg)
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})
![Page 37: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/37.jpg)
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
![Page 38: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/38.jpg)
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ą
![Page 39: Relacyjny Model Danych](https://reader035.vdocuments.pub/reader035/viewer/2022070411/568147e5550346895db51e86/html5/thumbnails/39.jpg)
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