Informatyka I BAZY DANYCH dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017
Plan wykładu Definicja systemu baz danych Modele danych Relacyjne bazy danych Język SQL Hurtownie danych
Baza danych Baza danych (ang. Database, DB) zbiór uporządkowanych informacji przechowywanych w postaci cyfrowej Database
Charakterystyki baz danych Trwałość Dane są przechowywane w pamięci stałej, zawartość której nie jest kasowana po wyłączeniu komputera Dane są przechowywane przez wiele lat Złożoność Baza danych przechowuje informacje o obiektach oraz powiązania między nimi Struktury danych są złożone Powiązania są również złożone Ograniczenia na przechowywane dane Wielkość Dane nie mogą być umieszczone w RAM Stosowana jest pamięć zewnętrzna Rozmiar danych nie pozwana na liniowe przeglądanie ich przez użytkowników Niezależność Dane istnieją niezależnie od użytkowników oraz aplikacji ich wykorzystujących
System zarządzania bazą danych System zarządzania bazą danych (SZBD, ang. Database Management System, DBMS) oprogramowanie realizujące funkcje dostępu do bazy danych, zarządzanie danymi oraz zapewniające bezpieczeństwo danych System baz danych SBD = BD + SZBD System baz danych (SBD) SZBD BD
Zadania SZBD BD SZBD Aplikacja Kopia zapasowa
Aplikacja bazodanowa Aplikacja bazodanowa program komputerowy realizujący określone zadanie (algorytmy) oraz wykorzystujący SZBD w celu zapisywania, przetwarzania oraz pobierania danych z BD Aplikacje systemowe: zarządzanie BD Aplikacje stosowane: zorientowane na końcowego użytkownika
Użytkownik SBD Użytkownik aplikacji bazodanowej (może nie wiedzieć że BD istnieje) Analityk systemowy Korzysta z gotowych narzędzi oraz zgromadzonych danych Fachowcy od informatyki: Administrator bazy danych Operator kopii zapasowych Programista aplikacji bazodanowej Administrator sieci lub serwera na którym jest zainstalowana baza danych Etc.
System informatyczny bazodanowy System informatyczny Aplikacja System bazy danych (SBD) Użytkownik aplikacji bazodanowej Aplikacja Kli SZBD BD Aplikacja SBD = Baza danych + System zarządzania SIBD = SBD + Aplikacja + Użytkownik
Modele baz danych Baza danych przechowuje informacje o obiektach świata rzeczywistego (ich uproszczone abstrakcje) model bazy danych - sposób odwzorowania obiektów świata rzeczywistego na struktury i powiązania w BD Student Analiza obiektowa Imię Nazwisko Grupa Rok Świat rzeczywisty Grupa Wykładowca Model (abstrakcja)
Elementy modelu danych Struktury danych W jakim formacie są przechowywane dane w bazie (tabela, graf, drzewo, lista, etc.) Operacje na danych Dodawanie, usuwanie, edycja, przeglądanie (tzw. CRUD) Nawigacja (np. w grafie lub drzewie) Ograniczenia Rekord BD musi zawierać określone wartości (ograniczenie dziedziny) Wartość pola nie może być pusta Krawędź grafu musi łączyć dwa wierzchołki itp.
Hierarchiczny model danych Koncepcja kartoteki hierarchia przodek potomek (struktura drzewa) Administracja Rektorat Dziekani Uczelnia Edukacja Wydział Transportu Wydział Elektryczny Studia stacjonarne Studia niestacjonarne Jan Kowalski Anna Nowak
Hierarchiczny model danych (c.d.) Zalety dobrze odzwierciedla wybrane struktury świata rzeczywistego (np. organizacje, system plików itp.) szybkie wyszukiwanie od góry w dół Wady 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ż rodzicpotomek zależności Np. powiązania pomiędzy przedmiotami na uczelni
Obiektowy model danych Klasa szablon do tworzenia obiektów o identycznych cechach oraz zachowaniu np. Student { Imię, Nazwisko, NumerAlbumu } Obiekt egzemplarz pewnej klasy Jan Kowalski : Student o konkretnych cechach Imię := Jan, Nazwisko := Kowalski, NumerAlbumu := 12345 Dziedziczenie cech klas Student jest klasą pochodną klasy Osoba i ma cechy Imię i Nazwisko Powiązania pomiędzy obiektami Student należy do Grupy
Obiektowy model danych (c.d.) Zalety: możliwość przechowania obiektów w bazie w takiej postaci jak są one przetwarzane w programie Ścisła integracja z kodem programu Wady: Problemy współbieżnego dostępu do danych przez różnych użytkowników Problemy nadania uprawnień dostępu
Grafowy model danych Struktura: graf (wierzchołki, krawędzie, atrybuty) Operacje: CRUD + wyszukiwanie ścieżki Grafowa bazy danych komunikacji miejskiej
Grafowy model danych (c.d.) Zalety: Naturalna forma reprezentacji dla wielu problemów transportowych Wbudowane operacje wyszukiwania ścieżek w grafie Wady: Ograniczony zakres zastosowania Małe doświadczenie dot. wykorzystania w komercyjnych systemach
Relacyjny model danych Najbardziej rozpowszechniony model danych Podstawy matematyczne: teoria zbiorów Dane są przechowywane w tabelach Tabele są połączone ze sobą Student należy Grupa Imię Nazwisko NumerGrupy Przedmiot studiuje Indeks wykłada Wykładowca
Tabele Dane są przechowywane w tabelach Każda tabela ma własną nazwę niepowtarzalną w skali całej BD Kolumny tabeli przechowują atrybuty (pola) obiektów Każdy wiersz (syn. rekord) przechowuje informacje o jednym obiekcie (instancja) Indeks Imię Nazwisko NumerGrupy 262345 Jan Nowak T5 274568 Alicja Kowalska T5 258905 Piotr Lesiak T2 Tabela STUDENT
Kolumny tabeli Kolumna = atrybut obiektu (pole klasy) W kolumnie Imię są przechowywane imiona studentów Rodzaj wartości przechowywanych zależy od atrybutu: Nazwisko: Tekst Grupa: Tekst Indeks: Liczba całkowita NumerGrupy: tablica char[2] Etc. Tabela zawiera przynajmniej jedną kolumnę Liczba kolumn w tabeli nie jest ograniczona
Wybrane typy danych kolumn SQL Server varchar, nvarchar char(n) int, numeric decimal, real bit datetime, date Odpowiednik w Java String char[n] int double, float boolean Date * na przykładzie SBD Microsoft SQL Server
Rekordy tabeli Rekordy tabeli przechowują informacje o obiektach (w programowaniu: egzemplarze klas) Jeden rekord = 1 obiekt Student: { Jan, Nowak, T5, 262345 } Kolejność rekordów w tabeli nie ma znaczenia Tabela może nie zawierać żadnych rekordów Liczba rekordów w tabeli nie jest ograniczona
Klucz własny tabeli Kolumna przechowująca wartości jednoznacznie identyfikujące obiekt nazywa się kluczem własnym tabeli Student: kolumna Indeks Tabela nie może zawierać dwóch rekordów o tej samej wartości w kolumnie klucza własnego Klucz własny (identyfikator)
Klucz obcy tabeli W tabeli STUDENT kolumna NumerGrupy przechowuje wartości z kolumny NumerGrupy tabeli GRUPA Kolumna NumerGrupy w tabeli STUDENT jest kluczem obcym Wartości klucza obcego mogą się powtarzać Wiele studentów należy do tej samej grupy Wartości klucza obcego muszą pochodzić ze zbioru wartości klucza głównego innej tabeli Dopuszcza się wartość specjalna NULL (student nie należy do żadnej grupy)
Powiązania tabel Relacje pomiędzy tabelami są budowane za pomocą powiązań kluczy własnych z kluczami obcymi Grupa składa się ze Student należy do. 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 jednej grupy Grupa składa się z wielu studentów Grupa należy do jednego wydziału Wydział składa się z wielu grup
Komunikacja z bazą danych - SQL Użytkownik potrzebuje interfejsu umożliwiającego wykonanie operacji zapisu, odczytu oraz modyfikacji danych w bazie Uniwersalnym standardem komunikacji z bazą danych stał się język SQL (ang. Structured Query Language) Zbiór zapytań (kwerend) Użytkownik określa w zapytaniu co chce uzyskać, a nie jak Jest uniwersalnym językiem programowania stosowanym przez większość RBD
Interakcja z RBD za pomocą SQL Polecenie SQL (tekst) System bazy danych SZBD BD Wynik: - Tabela - Pojedyncza wartość - Brak
Podstawowe polecenia języka SQL INSERT UPDATE DELETE SELECT Wstawianie danych Modyfikacja danych Usuwanie danych Odczyt danych
Przykład polecenia SELECT SELECT Nazwisko, Imie, Indeks FROM STUDENT WHERE NumerGrupy > 'T2' AND NumerGrupy<'T6' AND Imie LIKE '_a%' ORDER BY Imie DESC Kolumny (w dowolnej kolejności) Tabela (lub lista tabel) Warunek, który muszą spełniać znalezione rekordy Sortowanie wyniku
Przykład polecenia INSERT Tabela Kolumny INSERT INTO STUDENT ( Imie, Nazwisko, Indeks, NumerGrupy ) VALUES ( 'Mikołaj', 'Nowak', 26523, 'T5' ) Wartości (zgodnie z kolejnością kolumn)
Przykład polecenia UPDATE Tabela UPDATE STUDENT SET Imie = 'Piotr', Nazwisko = 'Kowalski' WHERE Indeks=26523 Kolumny modyfikowane Rekordy, których dotyczy modyfikacja
Przykład polecenia DELETE Tabela DELETE FROM STUDENT WHERE Indeks BETWEEN 26500 AND 27000 AND GRUPA='T7' Warunek, który muszą spełnić rekordy usuwane
Infrastruktura aplikacji bazodanowej Aplikacja Interfejs wprowadzania danych Interfejs prezentacji danych Logika aplikacji SQL SBD Raporty
Interfejs użytkownika aplikacji bazodanowej Język SQL nie posiada wbudowanych mechanizmów wprowadzania / wyświetlania danych Aplikacja bazodanowa musi realizować interfejs użytkownika Możliwości: Opracowanie własnego interfejsu Wykorzystanie interfejsu udostępnianego przez SBD: Oracle Forms Microsoft Access Etc.
Raporty Większość współczesnych SBD posiadają zaawansowane mechanizmy tworzenia raportów ( kreatory ) Microsoft Reporting Services Oracle Reporting
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
Hurtownia danych Hurtownia danych (ang. Data Warehouse) bardzo duża baza danych zawierająca dane historyczne oraz bieżące Dane są uzupełniane okresowo W trybie codziennym dane są dostępne tylko do odczytu Dane mogą być zagregowane (przechowanie podsumowań zamiast danych bieżących) Dane są pogrupowane tematycznie
Architektura hurtowni danych
Wielowymiarowy model danych FAKTY informacje podlegające analizie, charakteryzują się ilościowo za pomocą miar Cena, liczba sztuk, etc. WYMIARY hierarchia kategorii wg których odbywa się analiza Lokalizacja (np. wg sklepów -> miast -> państw) Czas (np. Rok, Miesiąc) inne
Fakty i wymiary (przykład) Samochód Wymiar Lokalizacja Sprzedaż Marka samochodu Miasto Data sprzedaży Cena jedn. Liczba sztuk Fakty Czas Wymiar Wymiar
Reprezentacja danych w postaci tzw. kostki analitycznej Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Rozwijanie danych Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Zwijanie danych Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Wycinanie danych Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Popularne współczesne relacyjne SBD Komercyjne ORACLE Microsoft SQL Server IBM DB2 Sybase Enterprise Server Informix (IBM) Niekomercyjne MySQL Firebird PostgreSQL