Bazy Danych Wykład 1 S. Kozielski Program wykładu 1. 2. 3. a) b) 4. a) b) c) 5. a) b) 6. Wprowadzenie Modele danych – model relacyjny Język SQL Definiowanie struktury danych Operacje na bazie danych Ochrona baz danych Bezpieczeństwo baz danych – kontrola dostępu Ochrona integralności semantycznej – więzy referencyjne Ochrona integralności transakcyjnej – zarządzanie transakcjami Projektowanie baz danych Modelowanie związków encji Normalizacja struktury baz danych Architektura systemów korzystających z baz danych Literatura 1. C.J. Date – Wprowadzenie do systemów baz danych, WNT 2000 2. J.D. Ullman, J. Widom – Podstawowy wykład z systemów baz danych, WNT 2000 1. H.Garcia-Molina, J.D. Ullman, J. Widom – Implementacja systemów baz danych, WNT 2003 2. H.Garcia-Molina, J.D. Ullman, J. Widom – Systemy baz danych. Pełny wykład, WNT 2006 3. R. Elmasri, S. Navathe – Wprowadzenie do systemów baz danych, Addison-Wesley, Helion 2005. 1. R. Coburn – SQL dla każdego, Helion 2005 Pojęcia podstawowe Baza danych – zbiór danych pamiętanych w systemie komputerowym, dotyczących pewnej wyodrębnionej całości, wzajemnie powiązanych i wykorzystywanych przez wielu użytkowników. System Zarządzania Bazą Danych (SZBD, ang. DBMS) – uniwersalny system programowy, umożliwiający tworzenie, obsługę i ochronę baz danych w różnych zastosowaniach. Funkcje, struktura i użytkownicy SZBD Administrator b.d. - tworzenie b.d., - strojenie b.d., - archiwizowanie b.d., - definiowanie użytkowników i ich uprawnień Programiści aplikacji Użytkownicy okazjonalni - wprowadzanie danych, - modyfikowanie danych, - usuwanie danych, - wyszukiwanie danych, - przetwarzanie danych, - wizualizacja i raportowanie - wyszukiwanie danych, - przetwarzanie danych Procesor zapytań 1) kontrola dostępu, 2) optymalizacja zapytań, 3) wykonanie zapytań, 4) ochrona integralności Moduł zarządzania pamięcią - zarządzanie plikami, - zarządzanie buforami Użytkownicy uprawnienia metadane (słownik b.d.) Moduł zarządzania transakcjami - sterowanie współbieżnym dostępem do danych, - odtwarzanie spójnego stanu bazy baza danych dziennik transakcji Poziomy opisu danych w b.d. U1 poziom zewnętrzny poziom pojęciowy U2 podschemat A (perspektywa A) U3 podschemat B (perspektywa B) Schemat b.d. (globalny logiczny opis b.d.) U4 U5 U6 podschemat C (perspektywa C) Model danych: - struktury danych, - operacje na strukturach poziom wewnętrzny fizyczne struktury danych • • • • Rekord – zestaw danych tworzących pewną całość, Pole – miejsce danych w rekordzie, Typ danej – sposób reprezentacji danej w polu, Typ rekordu – zestaw typów danych tworzących rekord, • Wystąpienie rekordu – zestaw wartości danych tworzących rekord. Opis wybranego fragmentu rzeczywistości nazwisko adres nrt Pracownik Temat M N N wykonuje należy 1 Zespół nazwa nazwa kwota kierownik kierownik Przykładowe pytania Z1: nazwisko nazwa tematu Które tematy (nazwa) wykonuje zadany pracownik? Z2: nazwa tematu nazwisko Kto (nazwisko) wykonuje zadany temat? Model hierarchiczny - schemat b. d. Zespół nazwa kierownik Pracownik nazwisko adres Zadanie nrt nazwa kierownik kwota Model hierarchiczny – wystąpienia rekordów Z1 Zespół Wdrożeń Z2 Jaworski P1 P2 P3 P4 P5 T1 T3 T2 T2 T3 T2 T3 150 200 300 200 150 200 150 Język DL/I get leftmost <rekord> [where <warunek>] get next <rekord> [where <warunek>] get next within parent <rekord> [where <warunek>] Model sieciowy - schemat b. d. Zespół nazwa kierownik Pracownik nazwisko Temat adres kwota Wypłata nrt nazwa kierownik Model sieciowy – wystąpienia rekordów Z1 A P1 P2 B 150 200 P3 B B 300 200 C T1 150 C T2 C T3 Język DML find <rekord> record by key <zmienna> find next <rekord> record in current <kolekcja> set find owner of current <kolekcja> set Model relacyjny - schemat b. d. Zespół nrz nazwa kierownik Pracownik nrp nazwisko adres Temat nrt nazwa kierownik Wypłata nrp nrt kwota Zespoły nrz nazwa kierownik 1 Zespół Analiz 2 2 Zespół Wdrożeń 1 Pracownicy nrp nazwisko adres nrz 1 Lipowski Ruda Śląska 2 2 Grabski Zabrze 1 3 Jaworek Gliwice 1 Tematy nrt nazwa kierownik 1 Projekt zasilacza 2 2 Projekt przetwornika 1 3 Projekt reaktora 2 Wypłaty nrp nrt kwota 2 2 300 3 3 150 1 1 150 3 2 200 1 3 200 Poziomy języków zapytań modelu relacyjnego 1. Języki operujące na pojedynczych rekordach (wierszach tablicy) 2. Języki operujące na całych tablicach (algebra relacji) 3. Wysokiego poziomu języki zapytań (SQL, Quel, QBE) Języki operujące na pojedynczych rekordach (wierszach tablicy) get next record from <tablica> Języki operujące na całych tablicach (algebra relacji) (ujęcie poglądowe – uproszczone) Przykład selekcji A B C 2 1 2 A B C C=2 2 2 Przykład projekcji A B C A AC C Przykład złączenia naturalnego r (A, B, C) s (C, D) ———— ——— a1 b1 c1 c1 d1 a2 b2 c2 c5 d5 a3 b3 c3 a4 b4 c1 z (A, B, C, D) = ————— a1 b1 c1 d1 a4 b4 c1 d1 Złączenie tabel Wypłaty Pracownicy nrp nazwisko adres nrz nrp nrt kwota 2 2 300 1 Lipowski Ruda 2 3 3 150 2 Grabski Zabrze 1 1 1 150 3 Jaworek Gliwice 1 3 2 200 1 3 200 Pracownicy Wypłaty nrp nazwisko adres nrz nrt kwota 2 Grabski Zabrze 1 2 300 3 Jaworek Gliwice 1 3 150 1 Lipowski Ruda 2 1 150 3 Jaworek Gliwice 1 2 200 1 Lipowski Ruda 2 3 200 Pracownicy Wypłaty Tematy nrp nazwisko adres nrz nrt kwota nazwa kier. 2 Grabski Zabrze 1 2 300 Pr. przetwor. 1 3 Jaworek Gliwice 1 3 150 Pr. reaktora 2 1 Lipowski Ruda 2 1 150 Pr. zasilacza 2 3 Jaworek Gliwice 1 2 200 Pr. przetwor. 1 1 Lipowski Ruda 2 3 200 Pr. reaktora 2 nazwisko = ‘Jaworek’ (Pracownicy Wypłaty Tematy) nrp nazwisko adres nrz nrt kwota nazwa kier. 3 Jaworek Gliwice 1 3 150 Pr. reaktora 2 3 Jaworek Gliwice 1 2 200 Pr. przetwor. 1 nazwa (nazwisko = ‘Jaworek’ (Pracownicy Wypłaty Tematy)) nazwa Pr. reaktora Pr. przetwor. Pytanie Z1 jako wyrażenie algebry relacji Z1 = nazwa (nazwisko = ‘Jaworek’ (Pracownicy Wypłaty Tematy)) Pytanie Z2 jako wyrażenie algebry relacji Z2 = nazwisko (nazwa = ‘Pr. reaktora’ (Pracownicy Wypłaty Tematy)) SQL - wysokiego poziomu język zapytań Postać pytania Z1: SELECT nazwa FROM pracownicy, wypłaty, tematy WHERE pracownicy.nrp = wypłaty.nrp AND wypłaty.nrt = tematy.nrt AND nazwisko = ‘Jaworek’ Postać pytania Z2: SELECT nazwisko FROM pracownicy, wypłaty, tematy WHERE pracownicy.nrp = wypłaty.nrp AND wypłaty.nrt = tematy.nrt AND nazwa = ‘Pr. reaktora’