410 likes | 641 Views
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
E N D
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 spełnia reguły ZALICZENIA 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) 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 Klucz główny Klucz główny ZALICZENIA Klucz obcy dr P. Drozda
Ćwiczenie • 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 dr P. Drozda
Rzut – projekcja (1) • ogranicza liczbę atrybutów • Przykład: PRACOWNICY dr P. Drozda
Rzut (2) • Wynik zapytania: PROJECT Pracownicy (Nazwisko, Płaca) SELECT Nazwisko, Płaca from Pracownicy • jest następujący: 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 dr P. Drozda
Iloczyn kartezjański • Cd przykładu: relacja wynikowa 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 dr P. Drozda
Równozłączenie • cd przykładu: tabela wynikowa 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 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) 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 dr P. Drozda
Złączenie prawostronne • Zachowuje nie pasujące wiersze z relacji będącej drugim argumentem złączenia • Wynik złączenia dr P. Drozda
Złączenie obustronne • Zachowuje nie pasujące wiersze z obydwu relacji • Wynik złączenia 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 dr P. Drozda
Pozostałe operatory Suma Przecięcie dr P. Drozda
Pozostałe operatory Różnica A-B 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 PRACOWNICY PRZEDMIOTY 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 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 Integralność referencyjna zachowana, jeśli są dopuszczane wartości null kluczaobcego (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