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