bazy danych

Transkrypt

bazy danych
Pojęcie bazy danych
Baza danych to zbiór danych zapisanych w ściśle określony sposób w strukturach odpowiadających
założonemu modelowi danych. W potocznym ujęciu obejmuje dane oraz program komputerowy
wyspecjalizowany do gromadzenia i przetwarzania tych danych. Program taki (często pakiet
programów) nazywany jest "Systemem zarządzania bazą danych" (ang. Data Base Management
System, DBMS). W ścisłej nomenklaturze baza danych oznacza zbiór danych, który zarządzany jest
przez system DBMS.
Komputerowa baza danych służy do tworzenia i zarządzania danymi, zapisanymi w systemie
komputerowym. Prosta baza obejmuje jedną lub kilka tabel (dokumentów, plików), natomiast bardziej
rozbudowane bazy posiadają dziesiątki, a nawet setki tabel zawierających mnóstwo rekordów. Do
identyfikacji rekordów baza wykorzystuje jeden lub kilka indeksów. Dane w bazie są przechowywane
w postaci pól i rekordów. Pole w bazie odpowiada pojedynczemu elementowi danych np. pola ( Imię,
nazwisko, adres). Komplet pól tworzy rekord – opis osoby, przedmiotu czy pojęcia.
Rodzaje baz danych
Pierwsze modele (struktury organizacji danych w bazie) baz danych pojawiły się w latach
sześćdziesiątych i siedemdziesiątych, kiedy to opracowywano bazy danych rozwiązujące problem
„powtarzających się grup”. Problem ten można łatwo zilustrować na prostym, wymyślonym
przykładzie: rejestrujemy dane klientów, z którymi firma prowadzi interesy. Dla każdego zamówienia
klienta firmy przechowujemy rekord w bazie. Z czasem, gdy ten sam klient składa coraz to więcej
zamówień pojawia się problem powtarzających się grup (w każdym zamówieniu umieszczone są te
same dane klienta).
Bazy danych można podzielić według struktur organizacji danych, których używają następująco:
• Bazy proste :
− bazy kartotekowe,
− bazy sieciowe,
− hierarchiczne bazy danych.
•
Bazy złożone :
− bazy relacyjne,
− bazy obiektowe,
− bazy relacyjno-obiektowe,
− strumieniowe bazy danych,
− temporalne bazy danych.
Kartotekowe bazy danych
Małe firmy lub osoby prywatne, często korzystają z prostych baz danych, które mogą być zwykłymi
plikami tekstowymi (pliki z rozszerzeniem .txt, .csv), a każdy wiersz takiego pliku jest odpowiednikiem
rekordu w bazie danych. W bazach kartotekowych każdy zbiór danych jest samodzielnym
dokumentem i nie może współpracować z innymi dokumentami. Z baz tego typu korzystają liczne
programy typu: książka telefoniczna, książka kucharska, spisy książek, kaset i inne. Wspólną cechą
tych baz jest ich zastosowanie w jednym wybranym celu.
Innym przypadkiem kartotekowych baz danych są bazy, w których dane zapisywane są w formie
tabeli arkusza kalkulacyjnego np. programu Excel. Każdy wiersz zawiera komplet danych o
człowieku, organizacji, przedmiocie czy pojęciu – ogólnie „obiekcie bazy danych” i nazywany bywa
rekordem lub zapisem w bazie danych. Każda kolumna wypełnianej w ten sposób tabeli nazywana
bywa polem lub atrybutem (cechą) obiektu.
Sieciowy model bazy danych
W modelu sieciowym problem „powtarzających się grup” został rozwiązany pomysłem wykorzystania
wskaźników wewnątrz bazy danych. Rekordy mogą zawierać odwołania do innych rekordów. W
rozważanym przykładzie dane dotyczące klienta i jego zamówień mogą być tak zorganizowane, że
rekord klienta zawiera wskaźnik do dokładnie jednego rekordu zamówienia. Każdy rekord
zamówienia zawiera zarówno dane dotyczące danego zamówienia jak i wskaźnik do innego rekordu
zamówienia.
Dane
klienta
Dane
zamówienia 1
Dane
zamówienia 2
Dane
zamówienia 3. . .
Przykład organizacji danych w modelu o strukturze sieciowej
Hierarchiczny model bazy danych
W modelu hierarchicznym problem powtarzających się grup oparty jest na zastosowaniu rekordów
danych, które złożone są z kolekcji innych rekordów. Można by powiedzieć, że dane w tym modelu
zorganizowane są podobnie jak foldery (katalogi) pamięci masowej w systemach operacyjnych.
Dotarcie do informacji w celu jej odczytania lub modyfikacji wymaga podania "ścieżki dostępu" –
drogi dotarcia do potrzebnych danych poprzez hierarchię istniejących rekordów. W bazach o modelu
hierarchicznym stosunkowo łatwo dodaje się nowe rekordy i wyszukuje rekordy poruszając się po
znanej ścieżce. Problemem staje się modyfikacja struktury hierarchicznej po usunięciu jednego lub
kilku rekordów, które nie leżą na końcu takiej ścieżki.
Klienci
Klienci firmy
Zamówienie 1
Klienci indywidualni
Zamówienie 2
Zamówienie 1
Zamówienie 2
Przykład organizacji danych w modelu o strukturze hierarchicznej
Relacyjny model baz danych
Po raz pierwszy relacyjny model baz danych (RMBD) został zaprezentowany w lipcu 1970 r. w
publikacji dr E.F. Codda zatytułowanej: „Relacyjny model logiczny dla dużych banków danych”. W
relacyjnych bazach danych dane przechowywane są w tabelach. Każda tabela składa się z krotek
(rekordów – wiersze tabeli) oraz atrybutów (pola, kolumny tabeli). Relacje w RMBD można podzielić
na trzy grupy: 1:1, 1:N, N:M, a dostęp do danych można uzyskać podając nazwę tabeli oraz kolumny
– najczęściej w tym celu używa się języka SQL (ang. Structured Query Language).
Relacyjna baza danych posiada następujące (wynikające z opracowanego przez Codde’a modelu
matematycznego) cechy:
1. atomowość: elementy relacji reprezentują pojedyncze wartości (nie można ich podzielić),
2. każdy atrybut ma rozróżnialną nazwę,
3. wartości w atrybucie pochodzą z tej samej dziedziny (domeny),
4. porządek atrybutów w relacji jest istotny,
5. każda krotka danej relacji jest różna,
6. porządek krotek w relacji jest nieistotny.
RMBD różni od poprzednich rodzajów baz to, że użytkownik nie musi znać fizycznego położenia
rekordu, który chce odczytać. W wymienionych poprzednio organizacjach danych duży nacisk
kładziono na struktury, których rozmieszczenie użytkownik musiał znać, by odnaleźć dany rekord.
Obiektowe bazy danych
Obiektowe bazy nie są zdefiniowane żadnym oficjalnym standardem. Obowiązujący obecnie
standard opracowany przez ODMG został opublikowany w 1993 roku. Jednym z podstawowych
celów modelu obiektowego jest bezpośrednie odwzorowanie obiektów i powiązań miedzy nimi
wchodzących w skład aplikacji, na zbiór obiektów i powiązań w bazie danych. Dzięki mechanizmom
obiektowym można też zwiększyć niezależność danych od aplikacji poprzez przeniesienie procedur
obsługi danych (w postaci metod) do systemu zarządzania bazą.
W bazach obiektowych dane przechowywane są w strukturach obiektowych (zdefiniowanych jako
klasy), zatem odczytać je można tylko przy pomocy metod udostępnianych przez te klasy. Obiekt w
takiej bazie rozumiany jest tak samo jak obiekt w obiektowo zorientowanym języku programowania,
czyli definiuje on lokalne struktury danych, (w których przechowywane są dane zdefiniowane w tym
obiekcie) oraz tzw. metody (usługi dostępu do danych i ich modyfikacji), za pomocą których można
na danych przechowywanych przez obiekt wykonywać operacje zdefiniowane w metodach obiektu.
Ze względu na sposób zarządzania danymi wyróżnia się:
− operacyjne bazy danych,
− analityczne bazy danych.
Operacyjne bazy danych
Operacyjne bazy danych są bardzo popularne. Bazy operacyjne, są to bazy wykorzystywane
wszędzie tam, gdzie istnieje potrzeba nie tylko gromadzenia danych, ale również możliwości ich
modyfikowania. Ten typ baz przechowuje dane dynamiczne, tzn. takie, które ulegają ciągłym
zmianom i przedstawiają aktualny stan rzeczy. Zazwyczaj to ten typ baz można spotkać w różnych
organizacjach i firmach. Przykładem takiej bazy danych są np. bazy inwentaryzacyjne lub bazy
obsługi zamówień.
Analityczne bazy danych
Analityczne bazy danych – stanowią przeciwieństwo operacyjnych baz danych. Ten typ baz
wykorzystywany jest przede wszystkim do przechowywania danych historycznych i informacji
związanych z pewnymi wydarzeniami. Są to dane, które nie wymagają modyfikowania, są one
statyczne tzn. bardzo rzadko, lub w ogóle nie ulegają zmianom. Bazy te są wykorzystywane po to,
aby np. przeanalizować tendencje rynkowe lub na podstawie długoterminowych danych
statystycznych przewidzieć prognozy na przyszłość. Przykładem takiej bazy są np. bazy testów
chemicznych lub danych pomiarowych.
Bazy relacyjno-obiektowe
Bazy relacyjno-obiektowe pozwalają na manipulowanie danymi jako zestawem obiektów, posiadają
jednak bazę relacyjną jako wewnętrzny mechanizm przechowywania danych.
Strumieniowe bazy danych
Strumieniowa baza danych to baza danych, w której dane są przedstawione w postaci zbioru
strumieni danych. System zarządzania taką bazą nazywany jest strumieniowym systemem
zarządzania danymi (DSMS - ang. Data Stream Management System).
Różnice pomiędzy systemem relacyjnym i strumieniowym
Można wskazać kilka podstawowych różnic pomiędzy systemami relacyjnymi i strumieniowymi.
Poniżej zamieszczono te cechy funkcjonalne systemów, które są spotykane jedynie w systemach
strumieniowych:
- implementacja ciągłych zapytań w systemie zarządzania danymi (nie w aplikacji),
- moduł rejestracji danych umieszczony w systemie zarządzania danymi (wbudowany),
- język zapytań oparty o zmodyfikowaną/rozszerzoną/alternatywną algebrę opisującą operacje na
strumieniach danych.
Temporalna baza danych
Temporalna baza danych jest odmianą bazy relacyjnej, w której każdy rekord posiada znacznik
czasowy, określający czas, w jakim wartość przechowywanych danych jest prawdziwa. Posiada
także operatory algebry relacyjnej, które pozwalają operować na danych temporalnych (uzyskiwać
określone dane historyczne z podanego okresu czasu ).
Lokalne bazy danych
Są to najprostsze bazy danych, które w całości znajdują się na jednym komputerze np. prosta baza
zawierająca spis ludności w danym mieście. Baza ta będzie się zawierać tylko w jednej tabeli.
Wszelkie zmiany użytkownik będzie bezpośrednio nanosił w tej tabeli np. dodawanie, usuwanie lub
aktualizację poszczególnych rekordów. Przykładem lokalnych baz danych mogą tu być: Access,
Paradox, dBase.
Bazy typu klient-server
Główna baza tego typu jest przechowywana w zasobach serwera, który to na ogół jest wydzielony
jako osobny komputer. Dostęp do niego jest realizowany za pośrednictwem innych komputerów
przez sieć, zatem nie muszą się one znajdować blisko siebie by korzystać z takiej bazy. Użytkownicy
korzystając z takiej bazy nie korzystają bezpośrednio z jej zasobów, ponieważ odbywa się to za
pośrednictwem programów zwanych klientami. Jeśli chodzi o serwery to najbardziej popularne na
rynku obecnie są produkty firm: InterBase, Oracle, Sybase, Informix oraz Microsoft. Bardzo ważna
cechą serwera jest możliwość korzystania z bazy w tym samym czasie przez wielu użytkowników
(wielodostępność).
Krótka historia rozwoju baz danych
Pierwszy system zarządzania baz danych został opracowany w latach sześćdziesiątych XX wieku.
Pionierem był Charles Bachman. Wczesne opracowanie Bachmana pokazywały, że jego celem było
bardziej efektywne użycie nowych urządzeń bezpośredniego dostępu do składowanych danych,
które wtedy zaczynały być dostępne. Jak dotąd, przetwarzanie danych było oparte na kartach
dziurkowanych i taśmach magnetycznych. Oznaczało to szeregowy dostęp do danych, co pociągało
za sobą użycie innych algorytmów niż dla dostępu swobodnego. Powstały wtedy dwa kluczowe
modele danych: sieciowy, opracowany przez CODASYL na bazie idei Bachmana i (być może
niezależnie) hierarchiczny, użyty w systemie opracowanym przez North American Rockwell i później
adoptowany przez IBM jako kamień milowy dla IMS. W tym czasie, oprócz CODASYL IDMS i IMS,
powstały także inne bazy danych. W 1970 E. F. Codd zaproponował relacyjny model danych.
Krytykował on istniejące modele danych za mieszanie abstrakcyjnego opisu struktury informacyjnej z
opisami mechanizmów fizycznego dostępu. Jednak przez dłuższy czas model relacyjny pozostawał
tylko w sferze rozważań akademickich. Podczas gdy produkty CODASYL (IDMS) i IBM (IMS) były
uważane za praktyczne rozwiązania, model relacyjny musiał wtedy poczekać na odpowiedni poziom
rozwoju oprogramowania i sprzętu. Jedną z pierwszych implementacji modelu relacyjnego były:
Ingres Michaela Stonebrakera z Berkeley i System R z IBM. Oba były prototypami badawczymi,
ogłoszonymi w ciągu roku 1976. Pierwsze komercyjne rozwiązania, Oracle i DB2 nie były dostępne
aż do roku około 1980. Natomiast pierwszym udanym produktem tego typu dla mikrokomputerów był
dBASE dla systemów operacyjnych CP/M i PC-DOS/MS-DOS.
Podczas lat osiemdziesiątych XX wieku, aktywność badaczy skupiała się na rozproszonych bazach
danych i maszynach bazodanowych (ang. Database machines), ale te wysiłki nie miały większego
odzwierciedlenia w ofertach rynkowych. Inną ważną ideą był funkcyjny model danych, ale oprócz
specjalnych zastosowań w genetyce, biologii molekularnej i wykrywaniu nadużyć finansowych, także
nie miały szerszych zastosowań.
W latach dziewięćdziesiątych XX wieku, uwaga badaczy przesunęła się w kierunku obiektowych baz
danych. Były one z powodzeniem zastosowane tam, gdzie konieczne była obsługa bardziej
skomplikowanych struktur danych. Przykładem były: przestrzenne bazy danych (ang. Spatial
databases), dane inżynieryjne i dane multimedialne. Część z tych idei była zaadaptowana przez
producentów relacyjnych baz danych. Te lata były też okresem rozprzestrzeniania się baz danych
Open Source, takich jak PostgreSQL i MySQL.
Pierwsze lata XXI wieku są okresem dużego zainteresowania bazami danych XML. W tym czasie,
podobnie jak to było w przypadku obiektowych baz danych, powstało sporo nowych firmproducentów tych baz, ale kluczowe ich elementy są wbudowywane także w istniejące relacyjne bazy
danych. Celem baz danych XML jest usunięcie tradycyjnego podziału na dokumenty i dane,
pozwalając na trzymanie wszystkich zasobów informacyjnych organizacji w jednym miejscu,
obojętnie czy te dane mają skomplikowaną strukturę, czy nie.
PROJEKTOWANIE RELACYJNEJ BAZY DANYCH
Baza danych jest to kolekcja wzajemnie ze sobą powiązanych danych, opisujących istniejące realnie
obiekty (np. książki w bibliotece, abonenci telefoniczni, studenci w wybranej uczelni, klienci firmy,
itd.). Zatem, baza danych będzie reprezentować zawsze pewien fragment rzeczywistości, a
przechowywane w bazie dane są niezbędne do realizacji określonych zadań.
Proces tworzenia bazy danych obejmuje następujące zasadnicze etapy:
1. utworzenie pojęciowego modelu danych,
2. przekształcenie pojęciowego modelu danych w logiczny model danych,
3. implementacja bazy danych.
Pojęciowy model danych
Elementami modelu danych są:
•
obiekt,
•
atrybut obiektu (cecha, własność),
•
relacja obiektów (relacja między obiektami, powiązanie).
Często jest stosowany następujący zapis:
• typ obiektu - STUDENT<imię; nazwisko; wzrost; waga; wiek>,
• wystąpienia obiektu STUDENT:
STUDENT<Jan; KLONOWSKI; 1,83; 75,00; 23>
STUDENT<Adam; KOWALSKI; 1,90; 85,00; 25>
• Powiązania (odwzorowania, relacje) obiektów odzwierciedlają związki pomiędzy obiektami.
W praktyce najczęściej spotykane są relacje pomiędzy dwoma obiektami.
Niech relacja
R: A → B
określa związek obiektu A z obiektem B.
Do podstawowych charakterystyk powiązań obiektów należą: stopień i moc obiektu w powiązaniu.
Charakterystyki te są określane oddzielnie dla każdego obiektu pozostającego w relacji:
•
•
•
•
Stopień obiektu A w powiązaniu R określa największą możliwą liczbę wystąpień obiektu A w
tym powiązaniu, które mogą być jednocześnie związane z jednym wystąpieniem obiektu B.
Stopień obiektu B w powiązaniu R określa największą możliwą liczbę wystąpień obiektu B w
tej relacji, które mogą być jednocześnie związane z jednym wystąpieniem obiektu A.
Moc obiektu A w powiązaniu R określa najmniejszą możliwą liczbę wystąpień obiektu A w tym
powiązaniu, które mogą być jednocześnie związane z jednym wystąpieniem obiektu B.
Moc obiektu B w powiązaniu R określa najmniejszą możliwą liczbę wystąpień obiektu B w tym
powiązaniu, które mogą być jednocześnie związane z jednym wystąpieniem obiektu A.
Biorąc pod uwagę kryterium oparte na stopniu obiektu w powiązaniu, powiązania między dwoma
obiektami dzieli się na powiązania nazywane relacją:
−
jeden do jeden (1:1),
−
jeden do wiele (wiele do jeden) (1:N),
−
wiele do wiele (N:N).
Relacja „jeden do jeden” (1:1) - stopnie obydwu obiektów w powiązaniu są równe jeden (=1).
Relacja „jeden do wielu” („wiele do jeden”) (1:N) - stopień jednego obiektu w powiązaniu wynosi
jeden (=1), a drugiego - co najmniej jeden (≥1).
Relacja „wiele do wiele” (N:N) - stopnie obydwu obiektów w powiązaniu nie muszą być sobie równe i
wynoszą co najmniej jeden (≥1).
Biorąc pod uwagę kryterium oparte na mocy obiektu w powiązaniu, relacje między dwoma obiektami
dzieli się powszechnie na relacje:
− silne (obligatoryjne, wymagane, obowiązkowe),
− jednostronnie słabe,
− słabe (opcjonalne).
Powiązanie „silne” - moce obydwu obiektów w powiązaniu są co najmniej równe jeden (≥1).
Powiązanie „jednostronnie słabe” - moc jednego obiektu w powiązaniu wynosi zero (=0), a drugiego co najmniej jeden (≥1).
Powiązanie „słabe” - moce obydwu obiektów w powiązaniu są równe zeru (=0).
Stopnie i moce obiektów w powiązaniu będą oznaczane znakami graficznymi:
oznaczenie słabego (opcjonalnego) związku obiektu w powiązaniu (tzw. „kółeczko”),
oznaczenie stopnia 1 „jeden” obiektu w powiązaniu,
oznaczenie stopnia N „wiele” obiektu w powiązaniu (tzw. „kurza łapka”).
Przykład pełnego powiązania między dwoma obiektami:
Obiekt B
Obiekt A
A
Stopień A:
Wiele (N)
Moc A:
Silny
(wymagany)
Moc B:
Słaby
(opcjonalny)
B
Stopień B:
Jeden (1)
Przykładem rozpatrywanego powiązania może być powiązanie pomiędzy miejscowością, a hotelem.
HOTEL
MIEJSCOWOŚĆ
W rozpatrywanym powiązaniu obiekt HOTEL jest obiektem podrzędnym, a obiekt MIEJSCOWOŚĆ –
obiektem nadrzędnym.
Przykład graficznego sposobu
definiowania obiektu i jego powiązań
Miejscowość
# Kod miejscowości
* Nazwa miejscowości
* Województwo
Data otwarcia
hotelu w
miejscowości
Rodzaje atrybutów i sposób ich oznaczania:
# identyfik ator
* wymagane
○ opcjonalne
HOTEL
# Kod hotelu
* Nazwa hotelu
* Kategoria hotelu
Logiczny model danych
Podstawę do implementacji bazy danych stanowi logiczny model bazy danych, który opisuje dane w
bazie z punktu widzenia jej użytkownika. Do tworzenia i obsługi baz danych wykorzystywane są
pakiety oprogramowania dostosowane do przyjętego modelu (organizacji) danych.
Pakiet MS Access jest oprogramowaniem przeznaczonym do tworzenia i obsługi baz danych typu
relacyjnego. Jest to zatem według wcześniej podanych określeń system zarządzania relacyjną bazą
danych (RDBMS).
Podstawowe własności relacyjnego modelu danych:
− Wszystkie dane, stanowiące bazę danych są przechowywane w dwuwymiarowych tabelach.
Kolumny tabeli nazywane są polami, wiersze – rekordami. Nagłówek każdej kolumny zawiera
nazwę atrybutu obiektu (nazwę pola).
− Jedna tabela zawiera wszystkie dane dotyczące wszystkich wystąpień obiektów jednego typu;
np. dane wszystkich klientów firmy, dane wszystkich studentów uczelni.
− Każdy rekord (wiersz) w tabeli jest odpowiednikiem wystąpienia reprezentanta obiektu. W
jednym rekordzie są zapisane wartości wszystkich cech opisujących jedno wystąpienie
obiektu, np. jednego konkretnego klienta firmy, czy jednego studenta.
− Każda tabela zawiera (najczęściej) jedno pole przeznaczone do przechowywania wartości
klucza podstawowego (identyfikatora obiektu). Każdy rekord w danej tabeli ma inną wartość
klucza podstawowego.
− Powiązania między obiektami są realizowane w dwojaki sposób: za pomocą klucza obcego
lub za pomocą tabeli intersekcji (złączenia).
Powiązania typu 1:1 oraz 1:N są realizowane, z zasady, za pomocą klucza obcego. Polega to na
poszerzeniu tabeli, obrazującej obiekt podrzędny, o pole, nazywane polem klucza obcego, które jest
polem umożliwiającym wpisanie odpowiedniej wartości klucza podstawowego z tabeli obiekt
nadrzędny. Zatem, w rozpatrywanym poprzednio przykładzie powiązania należy do tabeli
reprezentującej HOTEL dodać pole odpowiadające polu klucza podstawowego (kod miejscowości)
obiektu MIEJSCOWOŚĆ.
W relacyjnej bazie danych powiązanie wiele do wiele jest zastępowane dwoma powiązaniami 1:1 z
wykorzystaniem dodatkowej tabeli tzw. tabeli intersekcji. Ilustruje to poniższy rysunek:
B
A
A
B
C
Obiekt intersekcji
Implementacja bazy danych
Implementacja struktury danych bazy danych będzie polegać na zapisaniu w pamięci komputera
logicznego modelu danych za pomocą narzędzi systemu zarządzania bazą danych (w naszym
przykładzie pakietu Access). Dla ułatwienia posługiwania się bazą danych jest ona rozbudowywana o
narzędzia ułatwiające korzystanie z bazy. Implementacja struktury danych prostej bazy danych
zostanie pokazana na zamieszczonym poniżej przykładzie.
Zadanie
Podany poniżej pojęciowy model danych należy zaimplementować w bazie danych programu
Access. Implementując powiązanie N:M należy wykorzystać tabelę intersekcji, dzięki której, bez
powtarzania danych kraju można będzie zapisać, z jakiego kraju pochodzi uczestnik imprezy
organizowanej przez biuro turystyczne.
UCZESTNIK
# Pesel
* Imię
* Nazwisko
KRAJ
# Kod kraju
* Nazwa kraju
* Język