Bazy Danych
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:
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
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:
statyczne - sprawdzają czy dane transakcje nie wprowadziły bazy do stanu niepoprawnego
przejść - reguły wiążące ze sobą stany bazy danych
Funkcje bazy danych:
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
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:
współdzielenie - używanie przez kilka osób naraz; (lotnisko, pasażer, linia lotnicza)
integracja danych - jeden fakt powinien być zapisany raz;
integralność danych - dane powinny opisywać dokładnie poprawne stany OA;
abstrakcja danych - tylko ważne dane (kluczowe dane);
niezależność danych - model danych i dane nie są zależne od programu klienckiego;
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:
Zarządzanie zbiorami danych
dodawanie nowych zbiorów
usuwanie zbiorów
modyfikowanie struktury zbioru
wstawianie danych
aktualizowanie danych
usuwanie danych
Wyszukiwanie informacji
Zarządzanie bazą
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:
zewnętrzny - użytkownicy baz danych
wewnętrzny - fizyczna pamięć
pojęciowy - pomiędzy 1 a 2
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)
Poziom pojęciowy - reprezentacja zawartości informacyjnej bazy danych
reguły integralności
reguły bezpieczeństwa
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