Technologia informacyjna Bazy danych Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2016 Plan wykładu • Wstęp do baz danych • Modele baz danych • Relacyjne bazy danych • Język SQL • Rodzaje baz danych Definicja Baza danych (BD) – uporządkowany zbiór informacji przechowywany w postaci cyfrowej Cechy: • Trwałość – dane są przechowywane przez lata, w pamięci zewnętrznej • Wielkość – nie można przeglądać liniowo • Złożoność – odzwierciedla złożone obiekty świata rzeczywistego oraz ich powiązania • Niezależność – od użytkownika oraz aplikacji Elementy składowe bazy danych • Dane – informacja przechowywana • Sprzęt – zapewnia funkcjonowanie (infrastruktura) • Oprogramowanie = zapewnia dostęp do danych, ich analizę, bezpieczeństwo, etc. Wymogi stawiane bazom danych • Funkcjonowanie w różnych systemach operacyjnych, na różnym sprzęcie • Obsługa współczesnych protokołów sieciowych • Możliwość przechowania i efektywnego przetwarzania różnorodnych danych • Współpraca z narzędziami do wizualizacji oraz analizy danych Funkcjonalność systemu BD • Operacje na danych zgodnie z przyjętym modelem • Zapewnienie poprawności danych oraz ich odporności na awarie (kopie zapasowe, transakcje, ograniczenie) • Zarządzanie wspólnym dostępem do bazy wielu użytkowników • Zabezpieczenie przed nieautoryzowanym dostępem • Optymalizacja pracy systemu • Inne System zarządzania bazą danych • BD - jest pasywnym zbiorem danych • SZBD – oprogramowanie realizujące funkcje dostępu do bazy danych oraz zapewniające bezpieczeństwo danych • SZBD + BD = System baz danych zarządzanie SZBD BD Program Pliki System informatyczny bazodanowy System informatyczny Aplikacja System bazy danych Użytkownik Aplikacja Kli System zarządza nia Aplikacja BD Użytkownicy aplikacji baz danych • Użytkownik końcowy aplikacji • Administrator bazy danych • Operator kopii zapasowych • Programista aplikacji bazodanowej • Analityk systemowy • Administrator sieci lub serwera na którym jest zainstalowana baza danych • Etc. Rozwój baz danych • Lata 60. XX wieku – bazy danych plikowe • Pierwsze komercyjne systemy (banki, systemy sprzedaży biletów lotniczych, ewidencja ludności, itp.) • 1970 – relacyjny model danych • 1971 – koncepcja sieciowych BD • Lata 80. XX wieku – rozwój relacyjnych baz danych • Wiek XXI: intensywny rozwój baz danych NoSQL (nie tylko relacyjne) Modele baz danych • Baza danych przechowuje informacje o obiektach świata rzeczywistego • Model bazy danych - sposób odwzorowania obiektów świata rzeczywistego na struktury i powiązania w BD Student Imię Nazwisko analiza Model (abstrakcja) Grupa Rok Świat rzeczywisty Grupa Wykładowca Hierarchiczny model danych • Koncepcja kartoteki – hierarchia „przodek – potomek” (struktura drzewa) Rektorat Administracja Dziekani Uczelnia Wydział Transportu Edukacja Przykład hierarchicznego modelu danych uczelni Wydział Chemii Studia stacjonarne Studia niestacjonarne Cechy hierarchicznego modelu • dobrze odzwierciedla niektóre struktury świata rzeczywistego (np. organizacje, system plików itp.) • szybkie wyszukiwanie „od góry w dół” • jeden obiekt należy tylko do jednej kategorii • Dobrze się nadaje do systemu plików ale co z wykładowcą, który może prowadzić zajęcia na kilku wydziałach ?! • problemy z implementacją innych niż „rodzic-potomek” zależności • Np. powiązania pomiędzy przedmiotami na uczelni Sieciowy model danych • Rozwinięcie hierarchicznego modelu o pionowe powiązania pomiędzy elementami Grupa Wykładowca Grupa Uczelnia Student Grupa Wykładowca Student Grupa Obiektowy model danych • Koncepcja programowania obiektowego zastosowana w bazach danych Obiekt bazowy Atrybuty Powiązania Obiekt pochodny Obiektowy model danych (c.d.) • Klasa – szablon do tworzenia obiektów o identycznych cechach oraz zachowaniu • np. Student • Obiekt – egzemplarz pewnej klasy • Jan Kowalski : Student o konkretnych cechach • Imię := Jan, Nazwisko := Kowalski, Numer Albumu := 12345 • Dziedziczenie cech klas • Student jest klasą pochodną od klasy Osoba i ma cechy Imię i Nazwisko • Powiązania pomiędzy obiektami • Student należy do Grupy Obiektowy model danych (c.d.) • Zaletą obiektowych baz danych jest możliwość przechowania obiektów w bazie w takiej postaci jak są one przetwarzane w programie • Wadą okazała się zbyt złożona realizacja • Sukces odniosły „przejściówki” do relacyjnych baz danych (systemy ORM – ang. Object-Relational Mapping) pozwalające pogodzić obiektowy kod programu z relacyjną strukturą bazy danych Grafowy model danych Rodzaje wierzchołków Rodzaje krawędzi Grafowy model danych (c.d.) • Nowoczesny model danych • Zaletą jest szybkość wykonania operacji wyszukiwania w grafie oraz brak ograniczeń dot. struktury grafu – elastyczność tworzenia nowych struktur danych bez konieczności modyfikacji już istniejących • Wadą jest dość wąski zakres zastosowania ograniczony zadaniami rozwiązanie których wykorzystuje grafy Relacyjny model danych • Najbardziej rozpowszechniony model danych • Został zaproponowany w latach 70. XX wieku w postaci modelu ściśle matematycznego • Ówczesny rozwój techniki obliczeniowej nie pozwalał na jego zrealizowanie w postaci komputerowej • Pojawienie się pierwszych realizacji relacyjnych baz danych w latach 80. bardzo szybko spowodowało wyparcie z rynku większości BD implementujących inne modele danych Elementy relacyjnego modelu danych • Tabele jako podstawowe jednostki przechowywania danych • Powiązania pomiędzy tabelami • Operacje na tabelach Tabele • Dane w RBD są przechowywane w tabelach • Każda tabela ma unikalną nazwę • Tabela się składa z wierszy oraz kolumn Studenci Wykładowcy Grupy Przedmioty Kolumny tabeli – cechy obiektów • Tabela zawiera przynajmniej jedną kolumnę • Każda kolumna ma własną nazwę • Kolejność kolumn w tabeli nie ma znaczenia • Liczba kolumn w tabeli nie jest ograniczona • Każda kolumna zawiera dane jednego typu (liczba, tekst, data, dane binarne, etc.) Tabela STUDENT NumerAlbumu Imię Nazwisko NumerGrupy 12345 Jan Nowak T5 33333 Alicja Kowalska T5 87654 Marek Kozłowski T2 Wiersze tabeli - obiekty (rekordy) • Rekordy tabeli przechowują dane dot. obiektów • Jeden rekord = 1 obiekt • Kolejność rekordów w tabeli nie ma znaczenia • Tabela może nie zawierać żadnych rekordów • Liczba rekordów w tabeli nie jest ograniczona Tabela STUDENT NumerAlbumu Imię Nazwisko NumerGrupy 12345 Jan Nowak T5 33333 Alicja Kowalska T5 87654 Marek Kozłowski T2 Klucz własny tabeli • Tabela nie może zawierać dwóch identycznych rekordów – powinny różnić się wartością przynajmniej w jednej kolumnie • Kolumna przechowująca wartości jednoznacznie identyfikujące obiekt, nazywa się kluczem własnym tabeli Klucz obcy tabeli • Klucz obcy – kolumna tabeli, wartości której pochodzą z klucza własnego innej tabeli • W tabeli STUDENT kolumna NumerGrupy przechowuje wartości z kolumny Numer tabeli GRUPA • Wartości klucza obcego mogą się powtarzać (wielu studentów należy do jednej grupy) Powiązania tabel • Relacje pomiędzy tabelami w RBD są budowane za pomocą powiązań kluczy własnych z kluczami obcymi Kolumna Student.NumerGrupy może zawierać tylko te wartości które występują w kolumnie Grupa.NumerGrupy Przykład struktury RBD Student należy do grupy Grupa należy do wydziału Komunikacja z bazą danych • System zarządzania bazą danych powinien zapewniać: • • • • • Odczyt przechowywanych danych Możliwość ich modyfikacji oraz usunięcia Metody tworzenia i usuwania obiektów BD Nadawanie uprawnień Etc. • Uniwersalnym standardem komunikacji z bazą danych stał się język SQL Język SQL • SQL (ang. Structured Query Language) – uniwersalny język zapytań RBD • Język deklaratywny • Użytkownik określa w zapytaniu co chce uzyskać • Decyzja o tym jak uzyskać wynik należy do SZBD • Należy do grupy strukturalnych języków programowania • Nie jest językiem kompletnym (brak operacji wprowadzenia oraz wyprowadzenia danych) • Język uniwersalny, stosowany w zdecydowanej większości współczesnych RBD Interakcja użytkownika z bazą danych za pomocą SQL System bazy danych Polecenie SQL SZBD BD Wynik w postaci tabeli Podstawowe polecenia języka SQL INSERT UPDATE DELETE SELECT Wstawianie danych Modyfikacja danych Usuwanie danych Wybieranie danych Przykłady INSERT INTO Student ( NumerAlbumu, Imie, Nazwisko, NumerGrupy) VALUES ( '12345', 'Jan', 'Nowak', 'T6' ) UPDATE Student SET NumerGrupy = 'T5' WHERE Nazwisko = 'Nowak' SELECT * FROM Student Infrastruktura aplikacji bazodanowej Aplikacja Interfejs wprowadzania danych SQL Interfejs prezentacji danych Raporty Logika aplikacji SBD Interfejs aplikacji bazodanowej • Język SQL nie posiada wbudowanych mechanizmów wprowadzania / wyświetlania danych • Aplikacja może realizować interfejs użytkownika: a) we własnym zakresie (aplikacje klient-serwer lub aplikacje WWW) b) wykorzystując narzędzia projektowania interfejsu udostępniane przez BD (Oracle Forms, Access, etc.) Logika aplikacji bazodanowej • Polecenia SQL wbudowane w kod aplikacji • Prosta metoda, ale przy każdej zmianie struktury BD należy zmieniać kod programu • Polecenia SQL osadzone na serwerze BD w postaci gotowych procedur składowanych • Większa wydajność oraz bezpieczeństwo systemu, konieczność synchronizacji kodu aplikacji z BD • Wykorzystanie bibliotek programowania obiektowego, które nie wymagają stosowania SQL bezpośrednio (ORM) • Metoda b. popularna; aczkolwiek kod SQL generowany automatycznie może nie być optymalnym Raporty • Większość współczesnych SBD posiadają zaawansowane mechanizmy tworzenia raportów („kreatory”) • Microsoft Reporting Services • Oracle Reporting •… • Można również tworzyć raporty w kodzie aplikacji Sterownik bazy danych Aplikacja Stacja robocza Sterownik BD SBD Serwer bazy danych Sterownik bazy danych (c.d.) • Sterownik BD – oprogramowanie zapewniające komunikację aplikacji bazodanowej z serwerem bazy danych • Sterownik zależy od rodzaju bazy danych, systemu operacyjnego oraz metody wykorzystania bazy danych • Większość SBD posiada sterowniki do większości platform (systemów operacyjnych) • JDBC – Java Database Connectivity • Microsoft ADO (Active Data Objects) • Etc. Bazy danych przetwarzania transakcyjnego OLTP • ang. Online Transactional Processing • Charakteryzują się dużą liczbą jednocześnie wykonywanych transakcji • Wiele równolegle działających użytkowników • Operacje wstawiania, modyfikacji oraz usuwania danych • Operacje są stosunkowo proste oraz krótkie • Domyślny tryb działania większości współczesnych BD Bazy danych przetwarzania analitycznego OLAP • ang. Online Analytical Processing • Bazy danych zorientowane na przechowanie (bardzo) dużych zbiorów danych (hurtownie) • Przeznaczenie – pozyskiwanie informacji zagregowanych, trendów oraz wniosków na bazie zgromadzonych w bazie faktów • Operacje wstawiania danych są rzadkie i są wykonywane grupowo (np. raz na koniec miesiąca) • Priorytetową operacją jest operacja wybierania danych Popularne współczesne relacyjne systemy baz danych Komercyjne ORACLE Microsoft SQL Server IBM DB2 Sybase Enterprise Server Informix (IBM) Niekomercyjne MySQL Firebird PostgreSQL … Baza danych MS Access • Część pakietu MS Office Professional • Relacyjny model danych • Jednolity plik danych • Wsparcie języka SQL • Wbudowane kreatory interfejsu użytkownika oraz raportów – kompletne narzędzie do tworzenia końcowych produktów informatycznych • Sterownik Microsoft Jet • Możliwość dostępu do BD z programów zewnętrznych