Wprowadzenie do baz danych
Transkrypt
Wprowadzenie do baz danych
Bazy danych Wprowadzenie SKiBD Motywacja do rozwoju baz danych • Posiadanie dużej ilości danych • Trudności w przechowywaniu i udostępnianiu danych • Konieczność szybkiego dostępu do informacji Potrzeba: Przechowywanie i przetwarzanie informacji o obiektach występujących w rzeczywistości 2 Przykład • Firma sprzedająca pewne produkty • Pracownicy spędzają dużo czasu na wypełnianiu dokumentów w formie papierowej • Kierownictwo chce usprawnić działanie firmy • Istnieje zapotrzebowanie na informacje analityczne: — Które produkty sprzedają się najlepiej? — Którzy klienci przynoszą największe zyski? — Jaka jest dynamika sprzedaży? Narzędzie do realizacji zasygnalizowanych potrzeb: • Obecnie wykonanie takich analiz jest czasochłonne i żmudne • Aktualne System informatyczny zastępujący dotychczasowe prace: wyniki analiz pozwolą podejmować decyzje prowadzące wzrostusprzedaży, zysków firmy baza danych do klientów, magazynu, podsumowania 3 Co to jest baza danych • Struktura do przechowywania informacji • Związek informacji z rzeczywistością • Określony format umożliwiający szybki dostęp do danych Przykład złej organizacji informacji Zbiór informacji Kartki ze swobodnym o książkach opisem,wodręcznym: bibliotece: - brak jednolity jednolitego format kart formatu opisujących książki -- porządek alfabetyczny nazwisk autorów utrudnienie dostępu do wg informacji - różnorodność informacji 4 Wnioski Wprowadzenie określonej struktury (formatu) pozwala na: • uporządkowanie informacji • szybsze i łatwiejsze operowanie informacją Postulat należy skonstruować strukturę pozwalającą: • przechowywać różne dane • opracować jednolite reguły przetwarzania takich danych 5 Teoria Codd’a E. F. Codd 1970 – relacyjny model danych (poszukiwana struktura) • silne podstawy teoretyczne (teoria mnogości: zbiory, relacje) • prostota rozwiązania (struktura tabeli) • reprezentacja danych w oderwaniu od fizycznej implementacji • uniwersalny przenośny język operowania danymi Sygnat. Autor Rok • określanie operacji naTytuł zbiorach zamiast przetwarzania 348510 L.Banachowski Bazy Danych, tworzenie aplikacji 1998 pojedynczych elementów 568900 Mei Kobayashi Wavelets and their applications 1998 102345 Ulka Rodgers Oracle, przewodnik projektanta baz danych 1995 ... ... ... ... 6 Systemy baz danych Korzyści z zastosowania systemu bazy danych • ukrycie fizycznych aspektów przechowywania danych • standardowy język manipulacji danymi (SQL) • umożliwienie projektowania na poziomie pojęć odpowiadających obiektom występującym w rzeczywistości System bazy danych SQL Implementacja pojęć i związków Interfejs użytkownika 7 Producenci systemów baz danych Oracle IBM (DB2) Microsoft (SQL Server) Informix Sybase Interbase inne (np. MySQL AB) Microsoft Access – oprogramowanie umożliwiające realizację prostych jednostanowiskowych baz danych. Zawiera pakiet do graficznego projektowania i realizacji aplikacji 8 Definicje pojęć Pole – pojedynczy niepodzielny element informacji Nazwa – identyfikuje pole Typ – zbiór wartości które może przyjąć Wartość – informacja zapisana w polu Rekord – nieuporządkowany zbiór różnych pól Tabela – nieuporządkowany zbiór rekordów tego samego typu 9 Reprezentacja graficzna Tabela – zbiór obiektów tego samego rodzaju 10 Reprezentacja graficzna Każdy wiersz (rekord) opisuje jeden obiekt. 11 Reprezentacja graficzna Pole 1 Pole 2 Pole 3 Pole 4 Pole 5 Pole6 Pole – pojedynczy atrybut, cecha obiektu Nagłówek tabeli – opis pól rekordów 12 Reprezentacja graficzna Pole 1 Pole 2 Pole 3 Pole 4 Pole 5 Pole6 Kolumna – zbiór pól tego samego rodzaju wszystkich obiektów 13 Unikalny identyfikator rekordu Potrzeba jednoznacznej identyfikacji rekordu - nie mogą istnieć dwa takie same rekordy Klucz – minimalny zbiór pól, na podstawie których można jednoznacznie identyfikować rekordy Uproszczenie klucza - wprowadzenie dodatkowego pola zawierającego unikalny identyfikator Przykłady unikalnych identyfikatorów w życiu NR indeksu studenta zamiast:PESEL NIP nazwisko, imię, rok urodzenia, imię ojca, matki 14 Własności elementów tabeli • kolejność pól w rekordzie nie jest ważna • kolejność rekordów w tabeli nie jest istotna • w tabeli nie może być dwóch identycznych rekordów Operowanie zbiorami zamiast elementami zbiorów - zbliżenie do języka naturalnego 15 Przykład wyrażeń w różnych językach Język naturalny: „wybierz nazwiska pracowników, których pensja przekracza 3000zł” Język zapytań (SQL): SELECT nazwisko FROM WYBIERZ Z pracownicy WHERE GDZIE pensja > 3000 Język proceduralny (język C): for (i = 1; i<= LiczbaRekordów; i = i+1) { if (rekord[i].pensja > 3000) { ... wydrukuj rekord ... } } 16 Iloczyn kartezjański zbiorów Iloczyn kartezjański dwóch zbiorów A, B jest zbiorem wszystkich możliwych par {ai, bi}, gdzie ai, bi są odpowiednio elementami zbiorów A, B Przykład A = {5, 1} B = {3, 2, 1} AxB={ {5,3} {5,2} {5,1} {1,3} {1,2} {1,1} } 17 Relacja „Relacją R nazywamy uporządkowaną trójkę zbioru{A, grR, B}, gdzie: A oznacza zbiór argumentów relacji, B oznacza zbiór wartości relacji zaś grR (graf relacji, wykres relacji) jest pewnym podzbiorem iloczynu kartezjańskiego A x B” definicja podana na przedmiocie Algebra i Teoria Mnogości 18 Przykład relacji (związku) Opisanie związku występującego w rzeczywistości: „kto prowadzi jakie zajęcia” mgr Kowalski Teoria pola dr Nowak Elektronika, Algebra dr Kamiński nie prowadzi zajęć w tym semestrze (urlop habilit.) Zbiory: A = Pracownicy mgr Kowalski dr Nowak dr Kamiński B = Przedmioty Teoria pola Algebra Elektronika Podzbiór iloczynu kartezjańskiego C=AxB Iloczyn kartezjański C=AxB Tylko te pary które są zgodne z rzeczywistością: Wszystkie możliwe pary (pracownik, przedmiot) – „każdy z każdym” {Kowalski, Teoria pola}, {Nowak, Elektronika}, {Nowak, Algebra} 19 Realizacja relacji z użyciem tabel Tabela zawierająca elementy zbioru A Tabela zawierająca elementy zbioru B IDA (klucz) IDB (klucz) Dodatkowa tabela zawierająca zbiór par pozostających w związku IDA IDB Każdy rekord tabeli dodatkowej opisuje pojedynczą parę 20 Przykład Tabela zawierająca Pracowników Tabela zawierająca Przedmioty Nazwisko tytuł IDA (klucz) IDB (klucz) Nazwa Kowalski mgr 1 1 Algebra Nowak dr 2 2 Elektronika Kamiński dr 3 3 Teoria pola Dodatkowa tabela zawierająca zbiór par Pracownik - Przedmiot IDA IDB 1 3 2 1 2 2 Każdy rekord tabeli dodatkowej opisuje pojedynczą parę 21 Definicje pojęć (cd.) Baza danych – zbiór tabel oraz związków (relacji) Indeks – lista określająca porządek rekordów wg. pewnego kryterium Z punktu widzenia teorii indeks nie jest konieczny ale przyspiesza operacje na danych. Przykład Indeks pracowników wg alfabetycznej kolejności nazwisk 22 Operacje 1) Operacje wywodzące się z teorii mnogości 2): Suma A ∪ B, suma rekordów Iloczyn A ∩ B, część wspólna Różnica A – B, rekordy tabeli A nie występujące w tabeli B Iloczyn kartezjański A x B, wszystkie pary rekordów (a, b) Operacje relacyjne: Selekcja Projekcja Złączenie wybór rekordów na podstawie kryterium ukrycie niektórych pól rekordów połączenie rekordów dwóch tabel na podstawie równości ustalonych pól Uwagi 1) Wynikiem każdej operacji jest tabela 2) Format rekordów tabel A i B musi być taki sam 23 Przykład sumy Tabela pracownicy1 Tabela pracownicy2 Instytut Nazwisko Tytuł Instytut Nazwisko Tytuł I-14 Kowalski mgr I-13 Karwowski mgr I-14 Nowak dr I-12 Czyżewska dr I-15 Dębski mgr I-12 Dąbrowski I-16 Wrocławski mgr I-14 Kamiński mgr dr 24 Przykład sumy Wynik sumy tabel pracownicy1 oraz pracownicy2 Instytut Nazwisko Tytuł I-14 Kowalski mgr I-14 Nowak dr I-15 Dębski mgr I-16 Wrocławski mgr I-14 Kamiński I-13 Karwowski mgr I-12 Czyżewska dr I-12 Dąbrowski dr mgr 25 Przykład iloczynu (część wspólna) Tabela pracownicy1 Tabela pracownicy2 Instytut Nazwisko Tytuł Instytut Nazwisko Tytuł I-14 Kowalski mgr I-13 Karwowski mgr I-14 Nowak dr I-14 Nowak dr I-15 Dębski mgr I-14 Kamiński dr I-16 Wrocławski mgr I-14 Kamiński dr 26 Przykład iloczynu (część wspólna) Tabela pracownicy1 Tabela pracownicy2 Instytut Nazwisko Tytuł Instytut Nazwisko Tytuł I-14 Kowalski mgr I-13 Karwowski mgr I-14 Nowak dr I-14 Nowak dr I-15 Dębski mgr I-14 Kamiński dr I-16 Wrocławski mgr I-14 Kamiński dr 27 Przykład iloczynu (część wspólna) Wynik iloczynu tabel pracownicy1 i pracownicy 2 Instytut Nazwisko Tytuł I-14 Nowak dr I-14 Kamiński dr 28 Przykład różnicy Tabela pracownicy1 Tabela pracownicy2 Instytut Nazwisko Tytuł Instytut Nazwisko Tytuł I-14 Kowalski mgr I-13 Karwowski mgr I-14 Nowak dr I-14 Nowak dr I-15 Dębski mgr I-14 Kamiński dr I-16 Wrocławski mgr I-14 Kamiński dr 29 Przykład różnicy Tabela pracownicy1 Tabela pracownicy2 Instytut Nazwisko Tytuł Instytut Nazwisko Tytuł I-14 Kowalski mgr I-13 Karwowski mgr I-14 Nowak dr I-14 Nowak dr I-15 Dębski mgr I-14 Kamiński dr I-16 Wrocławski mgr I-14 Kamiński dr 30 Przykład różnicy Wynik różnicy: pracownicy1 minus pracownicy2 Instytut Nazwisko Tytuł I-14 Kowalski mgr I-15 Dębski mgr I-16 Wrocławski mgr 31 Przykład iloczynu kartezjańskiego Tabela pracownicy Tabela projekty IDA Nazwisko Tytuł ID Nazwa 1 Kowalski mgr 14 Red Runner 2 Nowak dr 125 Wostok 3 Dębski mgr 32 Przykład iloczynu kartezjańskiego Iloczyn kartezjański tabel pracownicy oraz projekty IDA Nazwisko Tytuł ID Nazwa 1 Kowalski mgr 14 Red Runner 1 Kowalski mgr 125 Wostok 2 Nowak dr 14 Red Runner 2 Nowak dr 125 Wostok 3 Dębski mgr 14 Red Runner 3 Dębski mgr 125 Wostok 33 Przykład selekcji Tabela pracownicy IDA (klucz) Nazwisko Tytuł Instytut 1 Kowalski mgr I-16 2 Nowak dr I-16 3 Dębski mgr I-15 4 Wrocławski mgr I-14 5 Kamiński dr I-14 34 Przykład selekcji Wybierz pracowników z tytułem doktora IDA (klucz) Nazwisko Tytuł Instytut 1 Kowalski mgr I-16 2 Nowak dr I-16 3 Dębski mgr I-15 4 Wrocławski mgr I-14 5 Kamiński dr I-14 35 Przykład selekcji Wynik selekcji: Wybierz pracowników z tytułem doktora IDA (klucz) Nazwisko Tytuł Instytut 2 Nowak dr I-16 5 Kamiński dr I-14 36 Przykład projekcji Tabela pracownicy IDA (klucz) Nazwisko Tytuł Instytut 1 Kowalski mgr I-16 2 Nowak dr I-16 3 Dębski mgr I-15 4 Wrocławski mgr I-14 5 Kamiński dr I-14 37 Przykład projekcji Wybierz nazwiska i tytuły pracowników IDA (klucz) Nazwisko Tytuł Instytut 1 Kowalski mgr I-16 2 Nowak dr I-16 3 Dębski mgr I-15 4 Wrocławski mgr I-14 5 Kamiński dr I-14 38 Przykład projekcji Wynik projekcji: Wybierz nazwiska i tytuły pracowników Nazwisko Tytuł Kowalski mgr Nowak dr Dębski mgr Wrocławski mgr Kamiński dr 39 Przykład złączenia Tabela pracownicy Tabela instytuty IDA Nazwisko Tytuł Inst. IDI 1 Kowalski mgr I-16 I-14 Instytut Metrologii 2 Nowak dr I-16 I-15 Instytut Elektrotechniki 3 Dębski mgr I-15 I-16 Instytut Elektroniki 4 Wrocławski mgr I-14 5 Kamiński I-14 dr Nazwa 40 Przykład złączenia Wynik złączenia tabel Instytuty i Pracownicy IDA Nazwisko Tytuł Inst. IDI Nazwa 1 Kowalski mgr I-16 I-16 Instytut Elektroniki 2 Nowak dr I-16 I-16 Instytut Elektroniki 3 Dębski mgr I-15 I-15 Instytut Elektrotechniki 4 Wrocławski mgr I-14 I-14 Instytut Metrologii 5 Kamiński dr I-14 I-14 Instytut Metrologii Uwagi 1) Przy określaniu złączenia można użyć innej relacji niż równość (np. mniejszość) 2) Złączenie będzie używane do otrzymania informacji o związkach 41 Inne zagadnienia baz danych • Jednoczesny dostęp wielu użytkowników • Zasilanie bazy danych w informacje (kto, jak, kiedy?) • Aktualność danych • Zgodność z rzeczywistością (opis obiektów, zależności, reguły) • Trwałość danych (przechowywanie przez określony czas) • Ochrona danych (utrata, przekłamania) – archiwizacja • Wartość informacji zawartych w bazie danych 42 Język SQL • Instrukcje języka SQL • Operatory w języku SQL • Definiowanie zapytań w SQL’u 43 Konwencja zapisu SELECT – słowo kluczowe parametr – nazwa parametru { } – wyrażenie opcjonalne [element1 | element2] – jeden ze zbioru ... – analogiczna kontynuacja Przykład INSERT INTO tabela { (pole1 { , pole_2 {, ...} } ) } VALUES (wartość1 { ,wartość2{, ...}} ) 44 Język SQL DDL [ang. Data Definition Language] – instrukcje definiowania struktury danych DML [ang. Data Manipulation Language] – instrukcje manipulacji na danych: wstawianie, kasowanie, modyfikowanie, wybieranie. Operatory używane w wyrażeniach 45 Instrukcje DDL CREATE TABLE - utworzenie nowej tabeli CREATE INDEX - utworzenie indeksu CREATE VIEW - utworzenie perspektywy (nazwanego zapytania) ALTER TABLE - zmiana formatu tabeli (dodanie, usunięcie, zmiana pól tabeli) DROP TABLE - usuniecie tabeli z bazy danych DROP INDEX - usuniecie indeksu z bazy danych DROP VIEW - usuniecie perspektywy 46 Instrukcje DML SELECT - wybieranie danych (zapytanie) SELECT INTO - zapisanie wyników zapytania do tablicy INSERT INTO - dodawanie rekordów do tablicy UPDATE - modyfikowanie danych DELETE - usunięcie danych UNION - suma tabel INTERSECT - część wspólna tabel (iloczyn, przecięcie) MINUS - różnica tabel 47 Inne elementy SQL Związki LEFT, RIGHT, INNER, OUTER JOIN - określanie związków pomiędzy tabelami PARAMETERS - definiowanie parametrów zapytania Operatory w wyrażeniach Logiczne: AND, OR, NOT Arytmetyczne: + - / * Relacyjne: = < > <= > = < >, BETWEEN ... AND, Inne: {NOT} IN, LIKE, IS {NOT} NULL 48 Instrukcja SELECT SELECT {predykat} [ * | tabela.* | {tabela.}pole1 {AS alias1}{,{tabela.}pole2 {AS alias2} {,...}}] FROM wyrażenie_tabelowe {, ...} {IN zewnętrzna_baza_danych} {WHERE... } {GROUP BY... } {HAVING... } {ORDER BY... } 49 Instrukcja SELECT SELECT które_pola FROM z_której_tabeli {WHERE... } – jakie kryterium selekcji {GROUP BY... }- grupowanie {HAVING... }- ograniczenie wybranych rekordów w grupowaniu klauzule – dodatkowe określenie jak wykonać zapytanie {ORDER BY... }- porządkowanie Uwaga Istotna kolejność słów kluczowych 50 Przykłady instrukcji SELECT 1) SELECT ∗ FROM Pracownicy; 2) SELECT Nazwisko, Imię FROM Pracownicy; 3) SELECT Nazwisko, Imię FROM Pracownicy WHERE Pensja > 3000; 4) SELECT Nazwisko, Imię, Pensja FROM Pracownicy WHERE Pensja > 3000 ORDER BY Nazwisko, Imię; 51 Zastępcza nazwa - ALIAS ALIAS (synonim) Zastąpienie nazwy pola Zastąpienie nazwy tabeli Skrót upraszczający opis wyrażeń SELECT Nazwisko, Imię, Pensja AS Pobory FROM Pracownicy WHERE Pobory > 3000; SELECT Nazwisko FROM Pracownicy AS Pr WHERE Pr.Pensja > 3000 AND Pr.Data<2-02-2000; 52 Agregacja i grupowanie Agregacja - wyznaczenie pojedynczej wartości dla całej grupy: Sumy, Średniej, wartości maksymalnej, minimalnej Miesiąc Wpływ Razem za cały mc Styczeń 1000 Styczeń 2300 Styczeń 4000 Luty 1000 7300 2300 Luty Miesiąc, SUM(Wpływ) 1300 SELECT FROM Operacje Marzec 3850 GROUP BY Miesiąc; 1450 Marzec 2300 Marzec 100 53 Funkcje agregujące SUM Suma COUNT Liczba elementów w grupie AVG Średnia MAX Wartości maksymalna MIN Wartość minimalnej FIRST Pierwszy z grupy LAST Ostatni z grupy Uwaga Funkcje wyznaczają pojedynczą wartość dla zbioru wartości. 54 Zapytania zagnieżdzone Wykorzystanie wyniku jednego zapytania jako parametru drugiego zapytania Tabela2 Zapytanie1 Tabela Wynik1 Zapytanie2 Wynik parametr SELECT Miesiąc, Wpływ FROM Operacje WHERE Wpływ IN (SELECT MAX(Wpływ) FROM Operacje); 55 Perspektywy [ang. VIEW] Zapamiętanie zapytania pod określoną nazwą (synonim zapytania) Ukrycie złożonego zapytania – ułatwienie dla użytkownika Wspomagają realizację łańcucha zapytań Zapytanie1 Tabela Zapytanie2 Wynik pośredni Wynik CREATE VIEW WpływyMies AS SELECT Miesiąc, SUM(Wpływ) AS SumaW FROM Operacje GROUP BY Miesiąc; SELECT * FROM WpływyMies WHERE Miesiąc<12; 56 Zapytania z wielu tabel Zapytania z wielu tabel dają możliwość realizacji: - iloczynu kartezjańskiego - złączeń (naturalnych, theta) SELECT * FROM Pracownik, Prezent; - iloczyn kartezjański SELECT * FROM Pracownik, Instytut WHERE Pracownik.Inst=Instytut.ID; - złączenie naturalne SELECT * FROM Pracownik INNER JOIN Instytut ON Pracownik.Inst=Instytut.ID; - złączenie naturalne 57 Złączenia opcjonalne Wartość NULL – oznaczenie że rekord nie jest związany Wykorzystanie słów kluczowych RIGHT, LEFT JOIN SELECT * FROM Pracownik, Instytut WHERE (Pracownik.Inst = Instytut.ID) OR (Pracownik.Inst IS NULL); - złączenie opcjonalne SELECT * FROM Pracownik LEFT JOIN Instytut ON Instytut.ID = Pracownik.Inst; - złączenie opcjonalne 58 Dopełnienie zapytania Słowa kluczowe: NOT IN SELECT Pola FROM Tabela WHERE PoleKluczowe NOT IN (Zapytanie1); Wybranie wpływów, które nie są maksymalne SELECT * FROM Wpływy WHERE Kwota NOT IN (SELECT MAX(Kwota) FROM Wpływy); 59 Samo-złączenie tabeli Zastosowanie przy związkach rekurencyjnych Polega na utworzenie synonimu tabeli: SELECT Pola FROM Tabela, Tabela AS SynonimTabeli ... Pracownik ( ID, Nazwisko, Imie, IDKierownika) – związek rekurencyjny przez pola ID = IDKierownika SELECT Nazwisko, Kierownik.Nazwisko FROM Pracownik, Pracownik AS Kierownik WHERE Pracownik.IDKierownika = Kierownik.ID; 60 Zapytanie krzyżowe Postać graficzna zapytania grupującego Zaimplementowana w MS Access’ie TRANSFORM ... PIVOT ... forma tradycyjna NRklienta Miesiąc Kwota Miesiąc forma krzyżowa 01 02 102034 01 34,56 NRklienta 102034 02 40,50 102034 34,56 103000 04 120,00 103000 01 30,45 103000 30,45 100,32 103000 02 100,32 301988 80,87 301988 01 80,87 301988 02 70,65 04 40,50 120,00 70,65 61 Operacje relacyjne a SELECT Operacje relacyjne: Selekcja Projekcja Złączenie wybór rekordów na podstawie kryterium ukrycie niektórych pól rekordów połączenie rekordów dwóch tabel na podstawie równości ustalonych pól projekcja określenie SELECT które pola wybrać argumentów FROM z których tabel wybrać dane operacji -tabel; złączenie WHERE jakie kryterium selekcji selekcja lub złączenie 62 Problem z wyrażeniem rekurencji Struktura drzewa ... • Wyrażenie pojedynczego poziomu rekurencji (1) • Wyrażenie ustalonej liczby poziomów (przez łańcuch zapytań typu (1) ) • Brak własności SQL’a pozwalających na wyrażenie całego drzewa 63 Problemy łączenia SQL z innymi językami Różnice pomiędzy modelami danych SQL C, Pascal C++, Delphi model danych relacyjny strukturalny 1) obiektowy typy danych typy podstawowe: całkowity, rzeczywisty, znakowy, struktury macierze jak 1) oraz nowe typy obiektowe zbiór Potrzebny jest interfejs pośredniczący. 64