Pojęcie bazy danych. Funkcje i możliwości. Pojęcie bazy danych Baza danych to: zbiór informacji zapisanych według ściśle określonych reguł, w strukturach odpowiadających założonemu modelowi danych, zbiór danych opisujących wybrany fragment rzeczywistości, zbiór danych trwałych wykorzystywanych przez system aplikacji danej organizacji (banku, szpitala…). Charakterystyczne cechy baz danych Bazy danych charakteryzują się trzema podstawowymi cechami: trwałością danych: czas życia mierzony w latach, dziesiątkach lat, istnienie danych niezależnie od działania aplikacji, rozmiarem wolumenu danych: objętość danych jest zbyt wielka do ich przechowywania w pamięci operacyjnej, wymagany nośnik zewnętrzny, złożonością danych: złożona struktura i zależności pomiędzy danymi, złożoność semantyczna, integralność danych. Wymagania stawiane bazie danych Bazie danych stawia się 6 głównych wymagań: zachowanie spójności danych, efektywne przetwarzanie danych, poprawne modelowanie świata rzeczywistego, autoryzowanie dostępu do danych, współbieżny dostęp do danych, metadane. Spójność bazy danych Spójność danych to poprawność danych z punktu widzenia przyjętych kryteriów, w szczególności trzech podstawowych: wiernego odzwierciedlania danych rzeczywistych, spełniania nałożonych ograniczeń, braku anomalii wynikających ze współbieżnego dostępu do danych. Wierne odzwierciedlenie danych Wierne odzwierciedlenie danych rzeczywistych oznacza, że w bazie nie istnieją dane, które nie są cechą rzeczywistych obiektów na temat których informacje przechowywane są w bazie danych (np. baza danych o klientach nie zawiera danych nieistniejącego w rzeczywistości klienta). Ponadto powiązania pomiędzy danymi w bazie danych odpowiadają powiązaniom pomiędzy rzeczywistymi obiektami. Spełnianie nałożonych ograniczeń Spełnianie nałożonych ograniczeń oznacza, że w bazie danych wszystkie dane na które nałożono ograniczenia te ograniczenia spełniają (np. jeżeli stawka VAT może przyjmować wartości 0%, 8%, 23% to w bazie danych nie pojawi się żadna inna wartość stawki VAT). Anomalie współbieżnego dostępu Baza danych umożliwiająca współbieżny dostęp do danych wielu użytkownikom musi posiadać mechanizmy zapobiegające powstawaniu niepoprawnych danych w przypadku modyfikacji tych samych danych jednocześnie przez dwóch lub więcej użytkowników. Musi także posiadać mechanizmy zapobiegające utracie danych w przypadku awarii sprzętowej lub programowej a także w przypadku błędnego działania użytkownika. Efektywne przetwarzanie danych Baza danych powinna realizować efektywne metody dostępu do danych (wstawiania, usuwania, modyfikacja i wyszukiwania danych). Powinna też przy pomocy efektywnych struktur optymalizować metody dostępu do danych. Fizyczna struktura przechowywania danych powinna być odseparowana od sposobu dostępu użytkowników do danych. Modelowanie świata rzeczywistego Poprawne modelowanie świata rzeczywistego oznacza, że struktura danych musi we właściwy (poprawny) sposób odzwierciedlać obiekty rzeczywiste i ich wzajemne powiązania. Autoryzacja dostępu Autoryzacja dostępu oznacza, że do bazy danych mają dostęp tylko jej użytkownicy jednoznacznie zidentyfikowani i zautentykowani, zgodnie z jednoznacznie przydzielonymi prawami dostępu do danych w bazie. Współbieżny dostęp do danych Współbieżny dostęp do danych oznacza umożliwienie wielu użytkownikom jednoczesne przeglądanie i modyfikowanie tego samego zbioru danych oraz rozwiązywanie konfliktów typu odczyt-zapis i zapis-zapis (przypadki gdy jedne użytkownik dokonuje zapisu danych a drugi w tym samym czasie dokonuje odczytu lub zapisu tych samych danych. Metadane Metadane to dane na temat bazy danych, również przechowywane w bazie danych opisujące dane przechowywane w bazie danych, struktury danych, użytkowników i ich uprawnienia. Technologie baz danych Na technologie związane z bazami danych składają się: fizyczne struktury danych i metody dostępu, przetwarzanie transakcyjne, modele danych, narzędzia programistyczne. Fizyczne struktury danych i metody dostępu pliki, indeksy, metody wyszukiwania, haszowania, łączenia, sortowania, grupowania, metody optymalizacji dostępu, fizyczna niezależność danych. Przetwarzanie transakcyjne dostęp do bazy danych za pomocą transakcji o właśnościach ACID: atomicity – atomowość, consistency – spójność, isolation – izolacja, durability – trwałość, metody synchronizacji transakcji, metody odtwarzania spójności, metody odtwarzania po awarii. Model danych Model danych to zbiór zasad opisujących strukturę danych w bazie danych. Definiuje on sposób reprezentacji dozwolonych w modelu obiektów, ich związków oraz dozwolonych na nich operacji. Wśród modeli danych można wyróżnić modele: sieciowy, hierarchiczny, obiektowy, relacyjny. Hierarchiczny model danych W modelu hierarchicznym dane przechowywane są na zasadzie rodzic-dziecko przypominając strukturą drzewo. Spójność danych zachowana jest, gdy: każda dana (z wyjątkiem pierwszej) ma tylko jednego rodzica, jeżeli dana może mieć dwóch rodziców to musi być skopiowana jako dziecko każdego z rodziców, usunięcie danej powoduje usunięcie jej potomków. Przykładem hierarchicznej struktury jest sposób przechowywania plików w folderach na dysku. Sieciowy model danych Rozszerzenie hierarchicznego modelu danych o możliwość definiowania relacji wiele-wiele w strukturze drzewa bez konieczności powtarzania wartości danych. Obiektowy model danych Dane przechowywane są w strukturach obiektowych zgodnie ze zdefiniowanymi w modelu klasami. Koncepcja obiektowej bazy danych pojawiła się w latach 90tych lecz nie zyskała szerszej popularności. Prace kontynuuje konsorcjum OMG (Object Management Group) w skład którego wchodzą m. in. Apple i IBM. Relacyjny model danych Opiera się na matematycznej teorii mnogości, w szczególności na pojęciu relacji reprezentowanym przez tablice. Relacje są zbiorem rekordów (wierszy tablic) o identycznej strukturze. Relacje powiązane są między sobą związkami zachodzącymi między danymi. Narzędzia programistyczne języki aplikacji, narzędzia modelowania i projektowania, języki DML, języki DDL. System Zarządzania Bazą Danych System Zarządzania Bazą Danych odpowiada za: administrowanie zbiorami danych (sposób zapisu danych na dysku, mechanizmy kopii bezpieczeństwa…), zapewnienie integralności danych (współdzielenie dostępu dodanych i ich modyfikacji…), udostępnienie danych (języki programowania, API…), kontrolę dostępu do danych (autoryzację użytkowników…).