Cechy i właściwości baz danych
Baza danych - uporządkowany zbiór powiązanych danych, do których może mieć dostęp równocześnie wielu użytkowników, jest abstrakcyjnym, informatycznym modelem wybranego fragmentu rzeczywistości, bd składa się z: danych (uporządkowanych w sposób zrozumiały dla użytkownika) i systemu zarządzania bd (program umożliwiający dostęp i operacje na bd)
System bazy danych = BD + SZBD, zestaw programów umożliwiających tworzenie i eksploatację bd
Hurtownia danych - ogromne zasoby informacji przechowywane w kilkudziesięciu systemach informatycznych, używane przez duże firmy (np. sieć supermarketów), uporządkowane tematycznie, ujednolicony system kodowania, zawierający wymiar czasowy (dane dostępne zawsze choćby były stare), ma wspomagać przetwarzanie informacji dla celów statystycznych i analitycznych,
Baza danych powinna zapewniać:
spójność (zgodność stanu bd z stanem świata rzeczywistego reprezentowanego przez bd)
współdzielenie danych
integralność (brak powtórzeń i danych które są zbędne)
bezpieczeństwo (ustalenie praw dostępu dla użytkowników)
niezależność danych (oddzielenie danych od procesów, które używają tych danych)
wyszukiwanie informacji
zarządzanie (administracja bazy danych)
Scenariusze powstawania baz danych
Tworzenie bazy danych jest procesem modelowania. Rozpoczyna się od zebrania wymagań jakie ma spełniać bd (analiza). Następnie jest to proces kolejnych transformacji poprzez trzy poziomy modelowania: koncepcyjny (udokumentowanie zidentyfikowanych wymagań - model świata rzeczywistego), logiczny (schemat relacyjny), fizyczny (z użyciem konkretnego SZBD, uwzględnienie wymagań aplikacji co do wydajności i pamięci). Na końcu schemat można poddać normalizacji.
Model danych jako architektura
Model danych - zbiór zasad posługiwania się danymi
hierarchiczny - model danych oparty na strukturze drzewa (jeden wyróżniony wierzchołek), używany był gdy do pisania baz danych służyły takie języki jak C, C++
sieciowy - modyfikacja modelu hierarchicznego, zamiast drzewa opierał się na grafie, obecnie wyszedł z użycia, opierał się na systemie plików
relacyjny - obecnie najpopularniejszy
obiektowy - nowy trend na rynku
relacyjno-obiektowy - łączy cechy modeli obiektowego i relacyjnego
Algebra relacji - kategorie operacji
Algebra relacji to zbiór operatorów, które biorą jako argument 1 lub kilka relacji i produkują relację jako wynik.
Operacje można podzielić na cztery kategorie:
zwyczajne działania algebry zbiorów: suma, przecięcie i różnica zastosowana do tabel
operacje zawężania tabeli:
selekcja - operacja jednoargumentowa, określona przez warunek dotyczący wartości kolumny danej relacji, wynikiem jest relacja zawierająca te wszystkie wiersze, które spełniały warunek
rzut - operacja jednoargumentowa określona przez podzbiór zbioru kolumn danej relacji, dająca w wyniku tabelę składającą się z tych kolumn
operacje złączenia (tworzenia wierszy z 2 lub więcej tabel):
iloczyn kartezjański - argumentami są dwie relacje, wynikiem relacja której wiersze są zbudowane ze wszystkich kombinacji wierszy relacji wyjściowych
równozłączenie - argumentami są dwie relacje, posiadające kolumny to tych samych dziedzinach, np. klucz główny jednej i klucz obcy w drugiej, wynikiem jest tabela otrzymana z iloczynu kartezjańskiego poprzez selekcje za pomocą warunku równości tych wspólnych atrybutów
złączenie naturalne - powstaje z równozłączenia dwóch poprzez rzutowanie usuwające powtarzające się kolumny złączenia
złączenie zewnętrzne (lewostronne, prawostronne, obustronne)
operacje „przemianowania”, które nie zmieniają wierszy tabeli, ale jej schemat, tzn. nazwy atrybutów lub (i ) samej tabeli
Model relacyjny bazy danych
Relacyjny model danych - relacje:
każda relacja w bazie ma jednoznaczną nazwę
każda kolumna w relacji ma jednoznaczną nazwę
wszystkie wartości w kolumnie są tego samego typu, zbiór wszystkich możliwych typów to dziedzina
kolumny relacji tworzą zbiór nieuporządkowany, kolumny nazywane bywają również atrybutami
wiersze relacji tworzą nieuporządkowany zbiór, nie powtarzają się, wiersze są nazywane encjami
każde pole leżące na przecięciu kolumny i wiersza powinno mieć wartość atomową (wartość z dziedziny albo NULL)
każda relacja zawiera klucz główny - kolumnę której wartość jednoznacznie definiuje wiersze (nie powtarzają się), wartość klucza głównego nie może być NULL
Cechy modelu relacyjnego
dane przechowywane są w tabelach o określonej ilości kolumn i dowolnej liczbie wierszy
każda kolumna zawiera dane określonego typu
typy danych są ustalone na etapie projektowania bd
każda tabela zawiera zidentyfikowany klucz, który jednoznacznie definiuje każdy wiersz
Zalety:
oparte na solidnych podstawach teoretycznych
stabilna pozycja na rynku
optymalizacja zapytań
dobrze zdefiniowany mechanizm dostępu do danych
Wady:
z góry ustalony konstruktor, brak złożonych obiektów i abstrakcyjnych typów danych, problemy z danymi multimedialnymi
brak środków hermetyzacji i modularyzacji (brak możliwości oddzielenia implementacji od specyfikacji), brak agregacji i generalizacji
brak środków do przechowywania informacji proceduralnych
języki baz danych różnią się od języków programowania
brak transakcji długotrwałych
niezgodność modelu pojęciowego z modelem implementacyjnym
Stosowanie:
proste dane, które łatwo umieścić w tabeli
wymagane wyszukiwanie według różnorodnych kryteriów
Normalizacja - zależności funkcyjne i wielowartościowe
Normalizacja - proces tworzenia tabel i powiązań między nimi zgodnie z określonym zbiorem reguł (pola powinny być atomowe - nie mogą być już dalej podzielone, wszystkie pola muszą odwoływać się do pola klucza podstawowego lub obcego, pola jednej tabeli muszą być niezależne względem siebie), proces przekształcania projektu bd przez postacie normalne, proces tworzenia schematu który nie podlega anomaliom
Postać normalna - stanowi sposób klasyfikowania tabel w oparciu o występujące w nich zależności funkcyjne
Zależność funkcyjna - oznacza, że znając jeden atrybut, zawsze możemy określić wartość drugiego
Zależność wielowartościowa - oznacza, że znając wartość jednego atrybutu, możemy określić wartość zbioru innego atrybutu
1NF - każdy atrybut niekluczowy jest funkcyjnie zależny od klucza głównego, każde pole jest atomowe
2NF - relacja jest w 1NF i każdy atrybut niekluczowy jest w pełni funkcyjnie zależny od klucza głównego (dla tabel z kluczami złożonymi stawiamy pytanie czy element niekluczowy jest jednoznacznie identyfikowany przez część klucza złożonego)
3NF - relacja jest w 2NF i każdy niekluczowy atrybut jest pośrednio zależny od klucza głównego, usuwamy tzw. zależności przechodni między danymi (dla każdej pary niekluczowych elementów zadajemy pytanie czy wartości obu pól zależą od siebie, jeżeli tak to przenosimy powiązane elementy do oddzielnej tabeli)
4NF - niedozwolone niektóre relacje między kluczem podstawowym a polami niekluczowymi
5NF - postać normalna złączenie-rzut, tabela jest w takiej postaci jeżeli nie występują anomalia złączenia-rzutu, brak redundancji
Postać normalna Boyce'a-Codda - występuje gdy dla wszystkich XY, X jest kluczem
Anomalia wynikające z nieprawidłowego zaprojektowania tabeli:
redundancja - niepotrzebne powtarzanie się tej samej informacji
anomalie przy modyfikacji - zmiana wartości atrybutu pociąga za sobą konieczność zmiany w wielu wierszach tabeli
anomalia przy usuwaniu - usunięcie informacji o obiekcie pociąga za sobą niepożądane usunięcie innych danych
Denormalizacja - stosuje się czasami aby zwiększyć wydajność aplikacji, powoduje to że nie będą wymuszone wszystkie nałożone ograniczenia - dlatego konieczne jest pisanie dodatkowych linii kodu, normalizacja redukuje więc nakład pracy związanej z oprogramowaniem bazy
Proces projektowania baz danych (diagramy związków encji, język ODL)
JĘZYK ODL
atrybuty - właściwości, których typy powstają z typów pierwotnych, takich jak całkowity lub tekstowy, charakterystyczne jest to że atrybuty nie odnoszą się do żadnej klasy, w języku ODL typy atrybutów mają ograniczoną strukturę
związki - typy tych właściwości są albo odniesieniami do obiektów pewnej klasy, albo kolekcjami (zbiorami) takich odniesień
metody - funkcje operujące na obiektach danej klasy
Deklaracja w języku ODL zawiera: słowo interface, nazwę interfejsu (tzn. klasy), listę właściwości klasy otoczonej nawiasami klamrowymi; właściwościami mogą być atrybuty, związki i metody
DIAGRAMY ENCJI - metoda „z góry na dół” analizy danych, celem jej jest podzielenie zbioru danych na logiczne grupy
zbiory encji są odpowiednikami obiektów w języku ODL
atrybuty i ich wartości własności opisują encji
związki opisują połączenie między dwoma lub większą ilością zbiorów encji
Diagramy encji służą do:
analizy powiązań i zależności tabelami
analizy zależności funkcyjnych w bd
wykrywaniu i usuwaniu problemów z redundancją
projektowaniu struktury danych
czytelnej i przejrzystej wizualizacji położenia atrybutów
analizy powiązań przy definiowaniu i wykorzystywaniu kluczy złożonych
Zalety diagramów:
niezależność od systemu
przejrzystość
łatwość implementacji
Język SQL
SQL (Structured Query Language) był początkowo projektowany jako język zapytań. Obecnie stał się standardowym interfejsem dla relacyjnych i nierelacyjnych baz danych. SQL1 - 1987, SQL89 - ulepszone cechy integralności (klucze), SQL2 - schematy SCHEMA, dziedziny DOMAIN, asercje ASSERTION, SQL3 - triggery, wprowadzenie obiektowości
Instrukcje SQL można pogrupować w 4 grupy:
język definiowania danych DDL - służy do definiowania tabel, schematu, kluczy, indeksów
język manipulowania danymi DML - kontroluje uprawnienia użytkowników, steruje transakcjami
język zapytań QL - daje możliwość pobierania z bd informacji zgodnych z podanymi warunkami
SQL może być używany jako:
interaktywny - służący do wprowadzania, modyfikacji i odczytywania danych z bazy
statyczny - instrukcje SQL-a wpisuje się w aplikacje w trakcie tworzenia
zanurzony - instrukcje SQL-a znajdują się w kodzie programu źródłowego, np. C lub Cobol
modułowy - moduły są łączone z modułami programów źródłowych
dynamiczny - kod języka jest generowany w trakcie działania programu
Operatory w SQL:
arytmetyczne
konkatenacji (łączenia tekstów)
logiczne
mnogościowe: UNION - suma dwóch zbiorów, INTERSECT - przecięcia, MINUS - różnica
Transakcje - problem współbieżności, rozwiązywanie problemów
Transakcje - operacje które powodują zmianę stanu bazy danych lub wyszukują dane w bazie, transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, jeżeli baza jest współużytkowana przez transakcję rozumie się wprowadzanie zmian do bazy lub wyszukiwanie danych, instrukcje SQL: COMMIT, ROLLBACK
niepodzielność - transakcja musi być wykonana od początku do końca, albo cała transakcja zostaje wykonana albo w całości jest anulowana
spójność - transakcje modyfikujące nie mogą pozostawić bd w stanie niespójnym
izolacja - jeżeli dane są współdzielone podczas ich modyfikacji dane nie mogą być dostępne dla innych transakcji
trwałość - jeżeli transakcja się kończy wszystkie dane związane z wykonaniem transakcji muszą być zachowane, nawet w przypadku awarii sprzęru lub oprogramowania
Najprostszym sposobem zrealizowania współbieżności jest zastosowanie mechanizmu blokad. Rezultatem zastosowania tego mechanizmu jest szeregowanie dostępu do rekordów. Rozróżniamy blokady: do odczytu i do zapisu. Blokowanie odbywa się najczęściej na poziomie rekordu. Rekord blokowany jest tylko na czas dostępu do niego, a nie na czas całej transakcji. SZBD realizuje mechanizm blokad przez modyfikację tabeli blokad.
Metody uniknięcia impasu:
zapobieganie powstawaniu impasu - kiedy żądanie przyznania blokady nie może być spełnione system wykonuje test dotyczący transakcji która żąda blokady i tej która dysponuje blokadą, w przypadku negatywnego wyniku testu jedna transakcja jest anulowana i zaczynana od początku
wykrywanie powstałych impasów - dopuszcza się by transakcje oczekiwały na odblokowanie interesujących ją danych, pewną transakcję anuluje się dopiero wtedy gdy wystąpi impas
Dziennik transakcji - zapisuje przebieg wykonywania transakcji, używany jest do wykonywania kopii zapasowych i odzyskiwania danych
System przetwarzania transakcji SPT - zapisuje do dziennika operacje transakcji (uruchomienie transakcji, sprowadzenie potrzebnych rekordów z bd, zapisanie obrazu po transakcji, zatwierdzenie zmian)
Słownik danych - sposób zapisywania metadanych czyli danych na temat danych, znajduje się w katalogu systemowym, przechowuje: opis relacji (nazwy relacji, typy danych kolumn i ich nazwy), deklaracje kluczy głównych i obcych, opis perspektyw, deklaracje grup użytkowników i uprawnień, informacje o indeksach i rozmiarach plików, strukturze plików
Obiektowość w bazach danych
OBD składa się z obiektów i klas obiektów powiązanych pewną liczbą mechanizmów abstrakcji.
Obiektowość oparta jest na następujących zasadach:
1. Budowa obiektu:
każda encja danej aplikacji jest modelowana jako obiekt mający swój identyfikator
identyfikator jest rozróżnialny od wartości obiektu
obiekty są rozróżnialne od wartości obiektów
obiekty mogą się składać z innych obiektów
wiele innych obiektów może się do nich odwoływać
2. Struktura i zachowanie
każdy obiekt zawiera strukturę i zachowanie
struktura - atrybuty
zachowanie - model
3. Dostęp do obiektów jest realizowany poprzez przesyłanie komunikatów
4. Grupowanie obiektów w klasy
każdy obiekt jest częścią jednej klasy
komunikaty przekazywane między obiektami są zwykle realizowane na podstawie informacji zdefiniowanych w danej klasie
5. Hierarchia
klasy są zorganizowane w hierarchie
hierarchia jest tworzona przez definiowanie klasy jako specjalizacji jednej lub kilku klas
podklasy - klasy podporządkowane (dziedziczą strukturę i zachowanie)
nadklasy - klasy nadrzędne
Zalety OBD:
model danych - wspólny dla analizy, projektowania i implementacji
jeden język - wspólny język definicji i manipulowania danymi
rozszerzalność - abstrakcyjne typy danych, ewolucja schematu
obiekty złożone - związki agregacji, generalizacji
obsługa multimediów
przechowywane procedury, triggery
długie transakcje - umożliwiają długotrwałe i zagnieżdżone transakcje
Cechy języka OBD:
enkapsulacja - ukrywanie szczegółów implementacji przed użytkownikiem, abstrakcyjne typy danych
przeciążenie, przesłanianie i późne wiązanie
zapytania ad'hoc - język zorientowany na zbiory
zarządzanie wersjami - wersje obiektów są łączone w konfiguracje
rozszerzalność - system bd dostarcza użytkownikowi zbiór typów i konstruktorów do tworzenia nowych typów danych
Cechy modelu obiektowego
zdolność do modelowania złożonych obiektów
zapewnienie identyfikacji obiektu
rozróżnienie typów i klas
definicja klas z dziedziczeniem
Standaryzacja - ODMG-93
Object Database Management Group to organizacja stworzona w 1991 roku przez członków pewnej liczby firm, która za cel obrała sobie stworzenie zbioru standardów obiektowego zarządzania bazą danych. Miało to wspomóc przenoszenie aplikacji między systemami. Standard ODMG składa się z:
model obiektów wywodzący się z obiektów OMG
języka zapytań OQL (Object Query Language)
język definiowania obiektów ODL - IDL
zbioru dowiązań języków programowania w szczególności C++, Java, Smalltalk
Należy podkreślić, iż standard ODMG-93 jest zaprojektowany z myślą o integracji OBD ze standardem CORBA, co jest szczególnie ważne dla systemów obiektów rozproszonych. Dziś prawie każdy komercyjny system OBD oferuje mechanizmy współpracy bazy danych ze środowiskiem CORBA. Podsumowując można powiedzieć, ze przejście od architektury klient-serwer w kierunku technologii obiektów rozproszonych stwarza dobre perspektywy rozwoju dla OBD.
System zarządzania bazą danych
SZBD - zorganizowany zbiór narzędzi umożliwiający dostęp i zarządzanie bazą danych, składa się zwykle z 3 części: jądro SZBD, interfejs, zestaw narzędzi
Zadania SZBD:
zarządzanie wersjami i danymi temporalnymi
przechowywanie i udostępnianie danych multimedialnych
wygodne (graficzne) środowisko do tworzenia aplikacji
pomosty do współpracy z innymi systemami
środki udostępniające bazę danych w internecie
Mechanizmy charakteryzujące SZBD:
środki do gromadzenia, utrzymywania, administrowania trwałymi i masowymi zbiorami danych
środki zapewniające spójność i bezpieczeństwo danych
sprawny dostęp do danych (poprzez język zapytań)
środki programistyczne pozwalające na aktualizowanie i przetwarzanie danych
jednoczesny dostęp do danych dla wielu użytkowników (poprzez transakcje)
środki pozwalające na dostęp do danych
środki pozwalające na odtwarzanie danych po awarii
środki pozwalające na optymalizacje zawartości pamięci
środki umożliwiające pracę w środowisku rozproszonym
Składniki jądra SZBD:
katalog systemowy
menadżer danych (realizuje wszystkie operacje dostępu do danych)
kompilatory DML, DDL
procesor zapytań DML
procesor czasu wykonania
Podstawowe funkcje jądra SZBD:
organizacja plików
mechanizm dostępu - dostęp sekwencyjny dla plików sekwencyjnych i haszowany dla plików haszowanych, indeksy jako B-drzewa
zarządzanie transakcjami - kontrola współzależności i spójności bazy
zarządzanie zapytaniami
sporządzanie kopii zapasowych i odtwarzanie danych
Porównanie baz danych relacyjnych i obiektowych.
Cechy |
b. relacyjne |
b. obiektowe |
przechowywanie danych |
tabele z określoną ilością kolumn i dowolnej liczbie wierszy |
obiekty będące typami złożonymi mogącymi zawierać w sobie kolejne obiekty |
operacje na danych |
kwerendy |
metody |
stan na rynku |
90% |
rozwijający się trend |
zalety |
niezależność od języka programowania, dobrze zdefiniowana teoria |
łatwość w reprezentowaniu rzeczywistości i zależności między obiektami, elastyczność |
wady |
brak możliwości reprezentacji relacji typu n-n, trudny model wymaga wielu tabel, brak złożonych typów danych, niezgodność z modelem używanym przez języki programowania |
powiązanie z jednym językiem programowania, słaba obsługa przeszukiwania danych, brak powszechnie akceptowalnych zapytań, trudny dostęp do danych fizycznych |
stosowanie |
proste dane, które łatwo umieścić w tabeli, gdy wymagane wyszukiwanie wg różnych kryteriów |
złożone struktury danych, dane zagnieżdżone, dane zmieniają dynamicznie rozmiar |
Przykłady rozwiązań!?
relacyjny Oracle (1977) - architektura klient-serwer, wydajny i niezawodny, dostępny na wiele platform, równoległe przetwarzanie transakcji, przetwarzanie rozproszone, dużo skalowalność, zgodny ze standardami, narzędzia do administrowania, Oracle Forms, Reports, Graphics, PL/SQL
obiektowy O2 - zaprojektowany i zaimplementowany pod koniec lat 80 przez niekomercyjną organizację, od 1991 na rynku, architektura klient-serwer, język programowania 4GL, interfejsy języków C i C++, traktuje obiekty i wartości jako konstrukcje niezależne, język zapytań OQL (Object Query Language) jest rozszerzeniem SQL, nie przestrzega reguły enkapsulacji, narzędzia do tworzenia aplikacji - nacisk położono na grafikę
Sysbase - wspólny interfejs dla wszystkich typów danych, Java do realizacji logiki aplikacji, wygodna realizacja zapytań rozproszonych, zaimplementowana obsługa multimediów
IBM-DB2 - obsługuje obiektowe rozszerzone dane przestrzenne, elastyczność serwerów, współpracuje z serwerami Javy
Informix - produktem flagowym jest Dynamic Server, zoptymalizowany system wspomagania decyzji za pomocą technologii równoległego przeszukiwania danych, moduł do multimediów, moduły do obsługi złożonych danych i logiki aplikacji
Bezpłatne systemy baz danych SQL: MySQL, PostgreSQL, Mini SQL
Bezpieczeństwo baz danych:
bezpieczeństwo danych - ochrona przed przypadkowym lub umyślnym zniszczeniem
poufność - dane są udostępniane tylko tym, którzy posiadają stosowne uprawnienia
tajność - dane są udostępniane z zachowaniem stopnia tajności
4GL - języki 4 generacji wspomagania tworzenia aplikacji:
generator oparty na formularzach
wysokiego poziomu język proceduralny (zazwyczaj blisko powiązany z SQL)