Relacyjny Model Danych

Post on 14-Jan-2016

37 views 0 download

description

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 - PowerPoint PPT Presentation

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