Wykład 1 Prowadzący: dr Paweł Drozda Konsultacje wtorek 12:30 – 14:00 Dyżur wtorek 11:00 – 12:30 Zaliczenie ćwiczeń Projekt bazy danych (MySQL lub Oracle) dr P. Drozda Wprowadzenie Relacyjny model danych Modelowanie baz danych (diagramy związków encji) Przekształcanie modelu związków encji do modelu relacyjnego Normalizacja Język baz danych SQL Transakcje, Indeksy Zarządzanie uprawnieniami Wyzwalacze dr P. Drozda J. Ullman, J. Widom „Podstawowy wykład z systemów baz danych” http://wazniak.mimuw.edu.pl P. Beynon-Davies „Systemy baz danych” L. Banachowski „Bazy Danych – Tworzenie Aplikacji” Conolly, Begg „Systemy Baz Danych” Date „Wprowadzenie do Systemów Baz Danych” Wykłady Stanford University – www.coursera.org dr P. Drozda Podstawowe pojęcia System zarządzania bazami danych (DBMS) Właściwości baz danych Modele danych dr P. Drozda Baza danych – zbiór informacji opisujący wybrany fragment rzeczywistości. Np. Dla sklepu: dane dotyczące sprzedawanych towarów w sklepie, klientów sklepu, pracowników, zamówień Schemat baz danych – określa w jaka powinna być struktura danych oraz w jaki sposób dane są powiązane System zarządzania bazą danych (DBMS) – zbiór narzędzi pozwalający na dostęp oraz na zarządzanie jedną lub wieloma bazami danych System baz danych – baza danych + DBMS Model danych – zbiór ogólnych zasad posługiwania się danymi dr P. Drozda System Baz Danych Aplikacja System Bazy danych DBMS Aplikacja Aplikacja Schemat Baza danych dr P. Drozda Modyfikacja schematu Zapytania Aktualizacje Procesor zapytań Moduł zarządzania transakcjami Moduł zarządzania pamięcią Dane Metadane dr P. Drozda Moduł zarządzania pamięcią o o przechowuje dane o miejscu zapisania plików bazy danych na dysku Obsługuje pamięć operacyjną (obsługiwane bloki z dysku przydzielane do pamięci operacyjnej) dr P. Drozda Procesor zapytań o Przekształca zapytanie lub operację na bazie danych (wyrażone np. w SQL) w ciąg poleceń żądających określonych danych Moduł zarządzania transakcjami o Gwarantuje poprawność i kompletność wykonania wszystkich transakcji (jedno lub więcej zapytań stanowiące grupę zadań do wykonania w jednym ciągu) dr P. Drozda Masywny – możliwość przechowywania TBs Trwały – dane nie znikają Bezpieczny – odporny na awarię Wielu użytkowników – kontrola wielodostępu dr P. Drozda Wygodny – niezależny od danych, wysokopoziomowy język dostępu do danych Efektywny – nawet tysiące zapytań na sekundę Niezawodny – ponad 99% dostępności dr P. Drozda Współdzielenie danych – wielu użytkowników tej samej bazy Integracja danych – baza nie powinna mieć powtarzających się bądź zbędnych danych Integralność danych – dokładne odzwierciedlenie obszaru analizy Trwałość danych – dane przechowywane przez pewien czas dr P. Drozda Bezpieczeństwo danych – dostęp do bazy lub jej części przez upoważnionych użytkowników Abstrakcja danych – dane opisują tylko istotne aspekty obiektów świata rzeczywistego Niezależność danych – dane niezależnie od aplikacji wykorzystujących te dane dr P. Drozda Dla każdego modelu należy określić Definicja danych Operowanie danymi Integralność danych dr P. Drozda Modele historyczne (klasyczne) o Sieciowy o Hierarchiczny Relacyjny model danych Obiektowy model danych dr P. Drozda 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 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 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ł 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 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 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 ZALICZENIA Id_indeksu Ocena Przedmiot Klucz 1234 5 Bazy danych obcy 3211 4 Bazy danych 3211 3 Matematyka 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: Atrybuty Krotki Składowe jednej krotki Schemat relacji Dziedzina dla każdego atrybutu Inny równoważny sposób przedstawienia relacji dr P. Drozda 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 Wydobywa wszystkie informacje z relacji z interesującymi użytkownika danymi – nie bierze pod uwagę wszystkich krotek Przykład: 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 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 Wynik zapytania: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 SQL select Przedmiot from PRACOWNICY inner join PRZEDMIOTY on PRACOWNICY.Nr_prac = PRZEDMIOTY.Prowadzacy where Nazwisko=‘Janik’; dr P. Drozda INSERT INTO tabela VALUES (wart1, wart2, …) – wstawia do tabeli wartości wart1, wart2, … Przykład INSERT INTO PRACOWNICY VALUES (10, ‘Banach’, ‘Jacek’) spowoduje dodanie wiersza do relacji PRACOWNICY DELETE FROM tabela WHERE warunek – usuwa z tabeli krotki określone w warunku Przykład DELETE FROM PRZEDMIOTY WHERE Prowadzący = 3 – usunie krotki dotyczące analizy matematycznej i statystyki dr P. Drozda UPDATE tabela SET nazwaKolumny = wartosc WHERE warunek – zmienia w krotkach określonych w warunku kolumnę nazwaKolumny na podaną wartość Przykład UPDATE PRZEDMIOTY SET prowadzący=1 WHERE prowadzący=3– zmienia prowadzącego przedmiotów analiza matematyczna i statystyka dr P. Drozda 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 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 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 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 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 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 Definiowana przez użytkownika – specyficzna dla każdej bazy danych Przykład Możemy wymusić, że każdy pracownik musi prowadzić jakieś zajęcia dr P. Drozda