B A Z Y DA N YC H dr Stanisław Drozda literatura: Jeffrey D. Ullman, Jennifer Widom „Podstawowy wykład z systemów baz danych” Thomas Connolly, Carolyn Begg „Systemy baz danych” t.1 Informacje wstępne. Wprowadzenie Czynniki wskazujące na potrzebę wykorzystania baz danych: • powiązane ze sobą informacje przechowywane są oddzielnie (w różnych plikach, a często na różnych komputerach), uzyskanie odpowiedzi na zapytania wymagające czerpania informacji z różnych zbiorów danych jest częstą potrzebą i zwykle okazuje się trudne i niewygodne; • te same dane są powielane w wielu różnych plikach, obsługiwanych przez różne narzędzia, prowadząc do zbędnej komplikacji systemu, nadmiernych kosztów i trudności w utrzymaniu spójności danych; • rosnąca objętość informacji zaczyna przekraczać możliwości dotychczas używanych narzędzi, prowadząc do spadku wydajności systemu; • często pojawiają się zadania, których wykonanie wymaga przenoszenia informacji poza komputer i niezautomatyzowanego przetwarzania, np. raporty tworzone przez jeden z działów instytucji muszą być przekazywane do dalszego przetwarzania innemu działowi zanim przyjmą postać ostateczną, i to z koniecznością konwersji formatów bądź wielu "ręcznych" modyfikacji, co stwarza okazje do powstawania błędów i opóźnień; • trudno pogodzić potrzeby wspólnego dostępu wielu użytkowników do tych samych danych z koniecznością utrzymania ich integralności, tj. zgodności z założonymi formatami i z aktualnym stanem faktycznym oraz ze złożonymi formami kontroli dostępu, tj. wymogiem wyraźnego definiowania zakresu dopuszczalnych operacji dla każdego użytkownika. Przykładowe sytuacje, w których korzystanie z bazy danych jest wskazane: • dane personalne o pracownikach większej firmy lub instytucji wykorzystywane są równolegle np. przez dział kadr, dział płac, dział socjalny. Poza tym część tych danych ma charakter poufny, na mocy odpowiednich ustaw bądź przepisów wewnętrznych firmy, zatem dostęp do przeglądania danych (a tym bardziej ich modyfikacji) musi być ściśle limitowany i udostępniany jedynie w zakresie koniecznym dla zadań danego użytkownika; Obszar analizy (OA Universe of Discourse) – wycinek rzeczywistości, podlegający opisowi przez bazę danych (system baz danych) Przykład rezerwacja biletów lotniczych, jakie dane będą istotne z punktu widzenia użytkowników bazy danych? np. skąd , dokąd , data i godzina wylotu, data i godzina przylotu, linie lotnicze, rodzaj samolotu itp. Oczywiście mogą w obszarze analizy występować dane nieistotne dla bazy danych. (zależy jaki zakres należy uwzględnić w bazie) np. jakie dania są w barze na lotnisku. Baza danych – zbiór logicznie uporządkowanych,trwałych danych reprezentujących dany obszar analizy . W bazie danych mamy do czynienia z faktami, które mają miejsce. W przykładzie skąd: Warszawa dokąd: Moskwa data i godzina wylotu: 12.10.2013 8:00 data i godzina przylotu: 12.10.2013 12:00 linie lotnicze: Aeroflot ---------------------------skąd: Warszawa dokąd: Biłgoraj data i godzina wylotu: 12.10.2013 9:00 data i godzina przylotu: 12.10.2013 14:00 linie lotnicze: Podlotek Baza danych – części: a) intensjonalna – definicja danych opisujących ich strukturę (schemat); tworzeniem takiego schematu będziemy nazywać projektowaniem baz danych. W przykładzie skąd , dokąd , data i godzina wylotu, data i godzina przylotu, linie lotnicze b) ekstensjonalna – dane bazy Bardziej sensowny zajmujący mniej miejsca jest zapis w tabeli skąd dokąd data i godzina wylotu data i godzina przylotu linie lotnicze Warszawa Moskwa 12.10.2013 8:00 12.10.2013 12:00 Aeroflot Warszawa Biłgoraj 12.10.2013 9:00 12.10.2013 14:00 Podlotek Integralność bazy danych – baza jest dokładnym odbiciem OA, który opisuje. Integralność oznacza, że wszystkie stany bazy danych są poprawne (w danym czasie) Transakcja – zdarzenie, które powoduje zmiany stanu w bazie danych. W przykładzie: zmiana lotu przez pasażera Więzy integralności – rozumiemy takie reguły określające w jaki sposób baza danych powinna opisywać OA i przechodzić tylko przez stany poprawne: a) statyczne – sprawdzają czy dane transakcje nie wprowadziły bazy do stanu niepoprawnego b) przejść – reguły wiążące ze sobą stany bazy danych Funkcje bazy danych: a) aktualizujące – zamieniają jeden stan w drugi (np. utwórz nowy dział, usuń pracownika z bazy). Funkcje aktualizujące są związane z więzami integralności b) zapytań – sprawdzanie stanu bazy danych (kwerendy pytające). Typy baz danych Użytkowane dziś bazy danych można podzielić, ze względu na sposób zarządzania nimi, na dwa rodzaje: • operacyjne bazy danych - znajdują zastosowanie w codziennym funkcjonowaniu różnych instytucji, organizacji i firm, gdyż są wykorzystywane tam, gdzie zachodzi ciągła potrzeba zbierania, przechowywania i modyfikowania danych. Ten typ bazy danych przechowuje dane dynamiczne - ulegające ciągłym zmianom i odzwierciedlające bieżący stan jakiegoś obiektu. Przykłady: bazy obsługi zamówień, bazy magazynowe, bazy danych o klientach, pacjentach, itp. • analityczne bazy danych – są wykorzystywane do przechowywania danych historycznych i informacji związanych z pewnymi zdarzeniami. Dane w bazie analitycznej są statyczne - bardzo rzadko (jeżeli w ogóle) ulegają zmianom i zawsze odzwierciedlają stan obiektów z pewnego ustalonego momentu, nigdy stan obecny. Takie bazy wykorzystuje się np. przy analizie tendencji rynkowych, prognozowaniu na podstawie danych archiwalnych, przechowywaniu danych pomiarowych. Modele danych Model danych (a w odniesieniu do konkretnej realizacji mówi się często o architekturze systemu baz danych) można rozumieć jako zbiór ogólnych zasad posługiwania się danymi. Zbiór ten obejmuje trzy główne części: a) definicja danych (model danych) - zbiór reguł określających strukturę danych czyli logiczną strukturę bazy danych (w odróżnieniu od niższego poziomu organizacji zapisu stosowanego wewnętrznie przez jądro bazy danych); b) operowanie danymi - zbiór reguł dotyczących procesu dostępu do danych i ich modyfikacji; c) integralność danych - zbiór reguł określających, które stany bazy danych są poprawne (awięc jakie operacje prowadzące do modyfikacji danych są dozwolone). Rozróżnia się trzy główne typy (lub generacje) modeli danych: 1. Proste modele danych(płaskie bazy danych), gdzie dane są zorganizowane w strukturę rekordów zgrupowanych w plikach. Głównymi dostępnymi operacjami są operacje na rekordach (ewentualnie na ich poszczególnych polach). 2. Klasyczne modele danych,do których należą modele hierarchiczne, sieciowe i relacyjne. 3. Semantyczne modele danych (semantyka to inaczej znaczenie) - ponieważ klasyczne modele danych nie dostarczają łatwego sposobu odczytania informacji o semantyce danych, stąd podejmuje się próby stworzenia innych modeli, uzupełniających ten brak. Przykładem częściowej realizacji tego programu są obiektowe, obiektowo-relacyjne i dedukcyjne modele danych Modele klasyczne Hierarchiczny model danych Hierarchiczny model danych jest pewnym rozszerzeniem modelu prostego. Tabela jest złożona z pól, z których każde służy do zapisu pojedynczego atrybutu obiektu opisywanego przez rekord, i charakteryzuje się określonym typem danych, np. liczba całkowita, tekst, data. Tabele w bazie tworzą strukturę odwróconego drzewa i są powiązane w formie nadrzędny-podrzędny. Typowe operacje na danych realizowane są poprzez funkcje lub procedury pisane w języku programowania o charakterze proceduralnym, np. C). Model hierarchiczny jest podobny do struktury systemu plików. Integralność danych: -każdy rekord (z wyjątkiem tabeli root -najwyższej w hierarchii) musi być związany tylko z jednym rekordem nadrzędnym, w konsekwencji nie można wstawić rekordu bez powiązania go z rekordem nadrzędnym, a usunięcie rekordu nadrzędnego wiąże się z usunięciem wszystkich względem niego podrzędnych; -zawartość każdego pola rekordu musi odpowiadać typowi danych z definicji danej tabeli; -jedno z pól każdej tabeli wyróżnia się jako klucz, tj. unikalny identyfikator rekordu (często przydzielany dość arbitralnie, podobnie jak np. numer albumu studenta czy numer PESEL). Sieciowy model danych Sieciowy model bazy danych został stworzony głównie w celu rozwiązania problemów związanych z modelem hierarchicznym. W ogólnym zarysie niewiele odbiega od niego. Model sieciowy również można sobie wyobrazić jako odwrócone drzewo. Istotna różnica polega jednak na tym, że wiele drzew może dzielić ze sobą gałęzie, co pozwala zobrazować powiązania wielu danych z wieloma danymi, a nie tylko jednej danej z wieloma. Zamiast związku nadrzędny-podrzędny między tabelami mamy tu powiązanie definiowane przez tzw.kolekcję (ang. set structures) łączącą dwie tabele przez przypisanie jednej z nich roli właściciela, drugiej - roli elementu kolekcji. Kolekcje pozwalają wiązać każdy rekord z tabeli-właściciela z dowolną ilością rekordów tabeli-elementu, a pojedynczemu rekordowi z tabeli-elementu musi odpowiadać dokładnie jeden rekord w tabeli-właściciela. Między każdymi tabelami można zdefiniować dowolną liczbę powiązań, a każda tabela może uczestniczyć w wielu kolekcjach. Operowanie danymi ma też charakter proceduralny: typowe operacje to wyszukiwanie rekordu na podstawie zawartości pól i/lub przynależności do danego wystąpienia typu kolekcji, i dokonywanie modyfikacji bieżącego rekordu. Integralność danych: podobnie jak w modelu hierarchicznym. Obiektowy model danych Obowiązujący obecnie standard został opublikowany w 1993 roku, ale nie jest oficjalny. Nie istnieje ani ogólnie przyjęta metoda projektowania takich baz, ani jednolita terminologii. Obiektowe bazy danych łączą własności obiektowych języków programowania z możliwościami systemów bazodanowych, oraz kon-cepcjami ogólnych rozważań na temat obiektowego postrzegania świata. Jednym z podstawowych celów tego typu bazy danych jest bezpośrednie odwzorowanie obiektów i powiązań między nimi wchodzących w skład aplikacji na zbiór obiektów i powiązań w bazie danych. W ten sposób bazy tego typu rozszerzają możliwości języków obiektowych, czyniąc z nich narzędzia do efektywnego tworzenia systemów baz danych (mniejszy stopień złożoności i mniejsza ilośc kodu). Model ten pozwala na przechowywanie danych o dowolnej strukturze, zdefiniowanej przez projektanta, co powoduje, że baza sprawdza się wszędzie tam, gdzie relacyjna baza danych napotyka trudności, przede wszystkim chodzi tutaj dynamicznie rozwijający się Internet i WWW. Pojęcia definiujące obiektowy model danych są typowe dla obiektowych języków programowania: obiekt, klasa, atrybut, metoda, hermetyzacja, agregacja, dziedziczenie. Język programowania jest jednocześnie językiem bazy danych, co zapewnia bezpośrednią zależność między obiektem w aplikacji a obiektem w bazie (zintegrowane dotychczas języki to: C++, Java, LISP, SmallTalk). Przykładowe ODBMS: Gemstone, O2 i Object Store (firmy Object Design), Objectivity/DB (firmy Objectivity), Versant ODMBS (firmy Versant). Właściwości bazy danych: a) współdzielenie – używanie przez kilka osób naraz; (lotnisko, pasażer, linia lotnicza) b) integracja danych – jeden fakt powinien być zapisany raz; c) integralność danych – dane powinny opisywać dokładnie poprawne stany OA; d) abstrakcja danych – tylko ważne dane (kluczowe dane); e) niezależność danych – model danych i dane nie są zależne od programu klienckiego; I. System zarządzania bazą danych SZBD System zarządzania bazą danych SZDB (DBMS – Database Management System) – zorganizowany zbiór narzędzi umożliwiający dostęp i zarządzanie do jednej lub więcej baz danych. Funkcje DMBS: 1. Zarządzanie zbiorami danych a) dodawanie nowych zbiorów b) usuwanie zbiorów c) modyfikowanie struktury zbioru d) wstawianie danych e) aktualizowanie danych f) usuwanie danych 2. Wyszukiwanie informacji 3. Zarządzanie bazą a) b) c) tworzenie i monitorowanie użytkowników ograniczanie dostępu do plików monitorowanie działania bazy danych Architektura systemu baz danych: Według ANSI/SPARC (Study Group on DataBase Management Systems), architekturę systemu można podzielić na trzy poziomy: 1. zewnętrzny – użytkownicy baz danych 2. wewnętrzny – fizyczna pamięć 3. pojęciowy – pomiędzy 1 a 2 1. Poziom zewnętrzny – poziom indywidualnego użytkownika; programowanie użytkownicy administrator bazy danych (DBA) Podjęzyk danych (DSL – Data SubLanguage) (np. SQL) język definiujący dane (DDL – Data Definition Language) język manipulowania danymi (DML – Data Modification Language) 2. Poziom pojęciowy – reprezentacja zawartości informacyjnej bazy danych reguły integralności reguły bezpieczeństwa 3. Poziom wewnętrzny – oddalony od fizycznego typy zachowań rekordów indeksy Administratorzy: Administrator danych (DA) – podejmuje działania dla danych Administrator bazy danych (DBA) – zapewnia wsparcie techniczne i sprawuje kontrole nad działaniem DBMS System baz danych = Baza danych + DBMS Funkcje pełnione przez administratora bazy danych: definiowanie schematu pojęciowego definiowanie schematu wewnętrznego, zdefiniowanie powiązania (jak dane mają być przechowywane) łączność z użytkownikami, aby zapewnić dostęp danych dla użytkowników oraz wytworzyć interfejsy definiowanie reguł bezpieczeństwa i integralności określanie procedur do archiwizowania i odzyskiwania danych śledzenie wydajności i reakcja na zmiany