Bazy danych 1 Podstawowe pojęcia
Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi Literatura L. Banachowski Bazy danych. Tworzenie aplikacji L. Banachowski, A. Chądzyńska, K. Matejewski Relacyjne bazy danych. Wykłady i ćwiczenia C.J. Date Wprowadzenie do systemów baz danych T. Conolly, C. Begg Systemy baz danych R.Stones, N. Matthew Bazy danych i PostgreSQL Zasoby Internetu
Systemy przetwarzania danych Ręczne systemy Systemy oparte na przetwarzaniu plików Systemy oparte na bazach danych
Systemy oparte na przetwarzaniu plików Zbiór aplikacji wykonujących polecenia użytkowników (np. generowanie raportów). Każdy program definiuje i przetwarza własne dane.
Systemy oparte na przetwarzaniu plików Każdy dział ma dostęp do swoich plików poprzez aplikacje napisane specjalnie dla niego. Pakiet aplikacji każdego działu obsługuje wprowadzanie danych, nadzoruje pliki danych, umożliwia generowanie raportów wybranych spośród dostępnych w systemie. Fizyczna struktura plików z danymi oraz zapisanych w nich rekordów jest zdefiniowana w kodzie każdej aplikacji..
Systemy oparte na przetwarzaniu plików - ograniczenia Rozproszenie i odseparowanie danych Powielanie danych Ograniczona ilość możliwych zapytań Zależność danych od programu fizyczna struktura i organizacja plików danych i rekordów jest zdefiniowana w kodzie aplikacji Niekompatybilne formaty plików Nie istnieje kontrola dostępu i przetwarzania danych, wielodostęp, odtwarzanie danych po awarii
Baza danych Baza danych to dostępny dla wielu użytkowników zbiór powiązanych logicznie danych trwałych wraz z definicją ich struktury, zaprojektowany dla zaspokojenia potrzeb przetwarzania danych przez daną organizację.
Baza danych Pojęcia związane zane z bazą danych Trwałość dane mają być przechowywane przez pewien okres czasu, na ogół nieokreślony z góry Zgodność z rzeczywistości cią (integralność danych) dane w bazie danych muszą stanowić wierne odzwierciedlenie modelowanego fragmentu rzeczywistości, w przypadku zmian we fragmencie rzeczywistości, baza danych też musi się zmieniać Replikacja danych w idealnej sytuacji jeden fakt dotyczący modelowanego fragmentu rzeczywistości powinien być w bazie reprezentowany tylko na jeden sposób Niezależno ność danych dane i procesy działające na bazie danych powinny być ze sobą niezależne Ochrona danych określone dane są używane tylko przez uprawnionych użytkowników
System zarządzania bazą danych System zarządzania bazą danych (SZBD, DBMS Database Management System) to system oprogramowania, który pozwala użytkownikom definiować, tworzyć i utrzymywać bazę danych oraz kontrolować do niej dostęp.
System zarządzania bazą danych DBMS pełni różne funkcje Pozwala zdefiniować bazę danych (typy danych, struktury i więzy dla danych przechowywanych w bazie) Pozwala dopisywać, modyfikować, usuwać i wyszukiwać dane z bazy Pozwala na kontrolowany dostęp do danych (szczegóły za chwilę) Przykłady: Komercyjne: Acces, Oracle, DB2, Microsoft SQL Server, Adaptive Server Anywhere Niekomercyjne: MySQL, PostgreSQL, Firebird
System informatyczny Zbiór danych opisujący pewien wybrany fragment rzeczywistości będziemy nazywać bazą danych. Struktura danych i powiązania między nimi są opisane przez tzw. schemat bazy danych. Baza danych jest zarządzana przez tzw. system zarządzania bazą danych, w skrócie SZBD. Funkcje oferowane przez SZBD zostaną omówione w dalszej części wykładu. SZBD i bazę danych będziemy dalej nazywać systemem bazy danych. Z systemem bazy danych współpracują programy użytkowników, zwane aplikacjami.zadaniem tych programów jest przetwarzanie danych, tj. wstawianie nowych danych, modyfikowanie danych już istniejących, usuwanie danych nieaktualnych, wyszukiwanie danych. Wszystkie omówione wyżej komponenty (tj. baza danych, SZBD i aplikacje) wchodzą wskład tzw. systemu informatycznego.
Architektura systemu bazy danych Głównym zadaniem wielopoziomowej architektury systemu bazy danych jest oddzielenie fizycznej reprezentacji bazy danych od różnych sposobów widzenia danych w bazie przez użytkowników.
Architektura ANSI-SPARC W 1975 r. American National Standards Institute - Standards Planning and Requirements Committee (ANSI-SPARC) zaproponował trzypoziomową architekturę dla systemu baz danych. Architektura ta wyróżnia trzy poziomy abstrakcji. Poziomy te są nazywane czasem schematami lub widokami: Poziom zewnętrzny Poziom konceptualny (pojęciowy) Poziom wewnętrzny
Poziom zewnętrzny Opisuje, jak użytkownicy widzą bazę danych i w jaki sposób uzyskują do niej dostęp. Składa się z wielu zewnętrznych sposobów widzenia bazy danych tzw. perspektyw. Perspektywa zawiera tylko te dane z bazy danych, którymi dany użytkownik jest zainteresowany. Pozostałe dane są dla niego niewidoczne. Perspektywy zwiększają poziom bezpieczeństwa danych oraz umożliwiają dostosowanie sposobu prezentacji danych do przyzwyczajeń użytkownika.
Poziom konceptualny (pojęciowy) Stanowi zbiorowy sposób widzenia bazy danych. Opisuje, jakie dane są przechowywane w bazie i jakie są ich wzajemne związki. Zawiera logiczną strukturę bazy danych.
Poziom wewnętrzny Dotyczy fizycznej reprezentacji bazy danych w komputerze. Opisuje sposób przechowywania danych w bazie strukturę danych, organizację plików używanych do przechowywania danych
Architektura ANSI-SPARC Użytkownik A1 Użytkownik A2 Użytkownik B1 Poziom zewnętrzny Zewnętrzny model danych A Schemat zewnętrzny A Zewnętrzny model danych B Odwzorowanie zewnętrzno-pojęciowe Odwzorowanie zewnętrzno-pojęciowe Poziom pojęciowy Schemat pojęciowy Pojęciowy model danych Odwzorowanie pojęciowo-wewnętrzne DBMS Poziom wewnętrzny Schemat wewnętrzny Wewnętrzny model danych (zapamiętana baza danych)
Architektura ANSI-SPARC
Niezależność danych Trzypoziomowa architektura służy do zapewnienia niezależności Niezależność danych ma dwie formy: Logiczna niezależność danych. Oznacza ona niewrażliwość schematów zewnętrznych na zmiany w schemacie konceptualnym. Na przykład można dodać nową daną do schematu konceptualnego bez wpływania na poziom zewnętrzny. Fizyczna niezależność danych. Oznacza ona niewrażliwość schematu konceptualnego na zmiany w schemacie fizycznym. Na przykład można zmienić strukturę przechowywania danych w bazie danych bez wpływania na schemat konceptualny.
Struktura DBMS Zestaw narzędzi DBMS Interfejs Jądro DBMS Jądro DBMS oznacza centralną maszynę, która realizuje podstawowe funkcje zarządzania danymi, takie jak zdefiniowane poniżej. Zestaw narzędzi DBMS oznacza szeroki wybór narzędzi, które obecnie mogą stanowić część DBMS lub mogą pochodzić od innych dostawców. Na przykład arkusze kalkulacyjne, języki czwartej generacji, programy monitorujące wydajność itp. Aby powiązać jądro z zestawem narzędzi, musimy mieć zdefiniowany interfejs. Jest to standardowy język, który łączy narzędzie, takie jak język czwartej generacji, z funkcjami jądra.
Funkcje CRUD Funkcje DBMS DBMS musi umożliwić użytkownikowi tworzenie struktur danych, zmiany danych w strukturach oraz usuwanie danych ze struktur. Funkcje te są określane łącznie jako operacje CRUD - Create (utwórz), Read (czytaj), Update (aktualizuj) i Delete (usuń).
Słownik danych Funkcje DBMS DBMS musi obsługiwać repozytorium metadanych - danych o danych. Repozytorium to nazywa się słownikiem danych lub katalogiem systemu. Zwykle słownik danych przechowuje dane o strukturze danych, związkach między danymi, więzach integralności nałożonych na dane, nazwach i uprawnieniach użytkowników.
Obsługa transakcji Funkcje DBMS DBMS powinien zapewnić, że albo wykonane zostaną wszystkie aktualizacje związane z daną transakcją, albo żadna z nich nie będzie wprowadzona. Transakcja to niepodzielny logicznie ciąg operacji, które używają zawartości bazy danych bądź ją aktualizują.
Funkcje DBMS Sterowanie współbieżnością DBMS musi umożliwiać wielu użytkownikom wspólne korzystanie z danych w bazie - współbieżny dostęp do danych. DBMS musi zapewniać, że w wypadku gdy dwie transakcje mają dostęp do tych samych danych, baza danych nie znajdzie się w stanie niespójnym.
Sterowanie współbieżnością czas T1 T2 saldo t 1 read(saldo) 100 t 2 read(saldo) saldo=saldo+100 100 t 3 saldo=saldo-10 write(saldo) 200 t 4 write(saldo) 90 t 5 90
Funkcje DBMS Obsługa odtwarzania bazy DBMS musi zapewnić, że baza danych może zostać odtworzona po awarii sprzętu lub oprogramowania powodującej uszkodzenie bazy.
Obsługa autoryzacji Funkcje DBMS DBMS musi mieć narzędzia zapewniające bezpieczeństwo bazy danych. Ogólnie mówiąc, DBMS musi obsługiwać pojęcie uprawnionego użytkownika bazy danych oraz umożliwiać tworzenie użytkowników oraz powiązanie uprawnień każdego użytkownika z dostępem do danych w bazie i/lub narzędzi DBMS.
Funkcje DBMS Obsługa transmisji danych DBMS musi być w stanie współpracować z oprogramowaniem transmisji danych. Szczególnie ważne jest zapewnienie połączenia oprogramowania narzędziowego z jądrem DBMS.
Funkcje DBMS Obsługa integralności danych Integralność danych jest właściwością bazy danych zapewniającą, że pozostaje ona wiernym odzwierciedleniem obszaru analizy. Aby to umożliwić, DBMS musi obsługiwać więzy integralności. DBMS musi mieć możliwość wymuszania więzów w kontekście operacji CRUD.
Funkcje DBMS Usługi wspierające niezależność danych DBMS powinien zawierać elementy wspierające niezależność programów od rzeczywistej struktury bazy danych.
Funkcje DBMS Programy narzędziowe do efektywnego zarządzania bazą danych DBMS powinien zapewnić odpowiednie narzędzia do administrowania bazą danych. Narzędzia te obejmują: narzędzia importowania danych do bazy z innych źródeł danych; narzędzia eksportowania danych z bazy danych do innych źródeł danych; narzędzia monitorowania użycia i operacji na bazie danych; narzędzia monitorowania wydajności bazy danych i zwiększania tej wydajności.
Interfejs DBMS Interfejs DBMS składa się z podjęzyka bazy danych. Jest to język programowania przeznaczony specjalnie do inicjowania funkcji DBMS. Składa się on z trzech części: Język definiowania danych (DDL) Język definiowania danych jest stosowany do tworzenia i usuwania struktur danych oraz do uzupełniania istniejących struktur. DDL aktualizuje metadane przechowywane w słowniku danych. Język operowania danymi (DML) Język operowania danymi jest używany do określania poleceń, które realizują działania CRUD na bazie danych. DML jest podstawowym mechanizmem stosowanym przy określaniu transakcji wykonywanych na bazie danych. Język kontroli danych (DCL) Język kontroli danych jest przeznaczony do wykorzystania przez administratora bazy. Jest on stosowany zwłaszcza do definiowania użytkowników bazy danych oraz przyznanych im uprawnień. Głównym przykładem takiego podjęzyka jest strukturalny język zapytań SQL. Ten podjęzyk jest często stosowany w powiązaniu z innymi narzędziami tworzenia aplikacji, takimi jak język czwartej generacji (4GL).
Grupy użytkowników Administratorzy danych (DA) podejmują decyzje, jakie dane powinny być przechowywane odpowiedzialni za projektowanie i kontrolowanie ustalonych standardów odpowiedzialni za przestrzeganie strategii i procedur postępowania odpowiedzialni za prawidłowy rozwój bazy
Grupy użytkowników Administratorzy bazy danych (DBA) odpowiedzialni technicznie za realizację decyzji administratora danych odpowiedzialni za fizyczną realizację bazy danych, kontrolę bezpieczeństwa i spójności, zapewnienie sprawnego działania aplikacji użytkowników, wydajność systemu
Porównanie DA i DBA Administrator danych Związany z planowaniem strategii Wyznacza długoterminowe cele Określa wymagania dotyczące danych Odpowiedzialny za konceptualny i logiczny projekt bazy danych Tworzy i utrzymuje model danych przedsiębiorstwa Koordynuje wykonanie systemu Zajmuje się zarządzaniem Jest niezależny od DBMS Administrator bazy danych Ocenia nowy DBMS Realizuje plany prowadzące do osiągnięcia celów Implementuje wymagania dotyczące danych Tworzy logiczny i fizyczny projekt bazy danych Implementuje fizyczny projekt bazy danych Monitoruje i steruje bazą danych Zajmuje się sprawami technicznymi Jest zależny od DBMS
Grupy użytkowników Projektanci bazy danych (logicznej i fizycznej) Twórcy aplikacji bazodanowej Użytkownicy korzystają z bazy danych poprzez specjalne aplikacje bądź poprzez korzystanie z języków wysokiego poziomu (np. SQL)
Architektura klient - serwer Klient Obsługuje interfejs użytkownika Akceptuje wprowadzane dane i sprawdza ich poprawność składniową Obsługuje sterowanie w aplikacji Tworzy żądanie do bazy danych i przesyła je do serwera Przekazuje odpowiedź z powrotem do użytkownika Serwer Akceptuje i przetwarza żądania do bazy danych od klientów Sprawdza uprawnienia Zapewnia nienaruszalność więzów integralności Realizuje przetwarzanie zapytań/aktualizacji i przekazuje odpowiedzi klientom Konserwuje katalog systemowy Obsługuje współbiezny dostęp Realizuje odzyskiwanie danych po awarii
Architektura klient - serwer
Architektura klient - serwer Zalety Umożliwia szerszy dostęp do istniejących baz danych Zwiększa wydajność systemu jednostki robocze mogą równolegle wykonywać aplikacje Pozwala na redukcje kosztów Redukuje koszty komunikacji aplikacje wykonują część operacji w komputerach klientów, a przez sieć przesyłają tylko żądanie dostępu do bazy danych Rozszerza zakres niesprzeczności danych więzy integralności są sprawdzane tylko w jednym miejscu Konfiguracja tylko jednego serwera
Model danych Model danych to spójny zestaw pojęć służący do opisywania danych i związków między nimi oraz do manipulowania danymi i ich związkami, a także do wyrażania więzów nałożonych na dane.
Model danych Części modelu danych: Część strukturalna zbiór reguł określających jaka jest struktura danych, Część wykonawcza zbiór reguł określających, jak manipuluje się danymi, Część dotycząca integralności danych zbiór reguł określających, które stany bazy są poprawne.
Rodzaje modeli danych Hierarchiczny model danych Sieciowy model danych Relacyjny model danych Model relacyjno-obiektowy Model obiektowy
Model relacyjny Twórcą modelu relacyjnego jest E.F.Codd, który w roku 1970 ogłosił pracę dotyczącą systemu baz danych opartego na modelu danych zbudowanym z relacji. Relacja R jest to dowolny podzbiór iloczynu kartezjańskiego jednego lub więcej zbiorów: R D D 1 1 D D 2 2... D... D k k = {( a, a 1 2,..., a k ): a i D, i {1,2,..., k}} i
Model relacyjny Dane zawsze odnoszą się do pewnego obiektu i charakteryzują jego wybrane własności. Własności, cechy obiektu, pozwalające częściowo opisać ten obiekt, nazywamy atrybutami (A i ). Atrybuty przyjmują wartości z określonego zbioru zwanego dziedziną (D i ). W każdym momencie dla każdego obiektu każdy atrybut przyjmuje wartość atomową (pojedynczą i niepodzielną).
Model relacyjny Schematem R relacji nazywamy zbiór atrybutów {A 1,..., A n } Relacją r o schemacie R = {A 1,..., A n } nazywamy skończony zbiór r = {t 1,..., t m } odwzorowań t i : R D, gdzie D jest równe sumie dziedzin atrybutów A 1,..., A n, takich, że t i (A j )=D j dla i=1,...,m, j=1,...,n. Każde takie odwzorowanie nazywamy krotką. Przykład: R={Numer, Skąd, Dokąd, Odlot, Przylot} t i (A j )={(Numer,83), (Skąd, 'Budapeszt'), Dokąd, 'Warszawa'). (Odlot, '11:30'), (Przylot, '13:10}
Model relacyjny Relacje mogą być reprezentowane w postaci tabel krotkom odpowiadają wiersze (rekordy), atrybutom kolumny (pola). PRACOWNICY(Nazwisko, Imię, Wiek, Pensja) - schemat relacji Nazwisko Imię Wiek Pensja rekord Kowalski Jan 35 360 Nowak Piotr 36 400 Zielińska Anna 25 340
Integralność danych - klucz Kluczem schematu R relacji nazywamy taki zbiór atrybutów K tego schematu, że przez wartości atrybutów z tego zbioru można jednoznacznie zidentyfikować każdą krotkę (tzn. żadne dwie różne krotki dowolnej relacji rozpiętej na schemacie R nie mają tych samych wartości dla atrybutów z K własność jednoznaczności). Własności: Wartość klucza pozwala jednoznacznie identyfikować rekordy. Dany schemat może posiadać więcej kluczy. Każdy nadzbiór klucza jest kluczem. Klucz, którego żaden podzbiór właściwy nie jest kluczem (własność minimalności), nazywa się kluczem właściwym (kandydującym) cym). Wśród kluczy wybiera się jeden i nazywa go się kluczem głównym wnym.
Klucz schemat relacji DANE_OSOBOWE(nr_dowodu, nazwisko, imię, data_ur) nr_dowodu nazwisko imię data_ur AB 2435209 Nowak Jan 05-05-53 CD 8574930 Kowalski Piotr 23-02-60 EF 3385778 Nowak Anna 01-12-59 GH 9938850 Bogucki Andrzej 03-03-65 IJ 8787895 Nowak Anna 11-12-59 KL 7657770 Smutny Waldemar 15-09-62
Klucz schemat relacji DANE_OSOBOWE(nr_dowodu, nazwisko, imię, data_ur) nr_dowodu nazwisko imię data_ur AB 2435209 Nowak Jan 05-05-53 CD 8574930 Kowalski Piotr 23-02-60 EF 3385778 Nowak Anna 01-12-59 GH 9938850 Bogucki Andrzej 03-03-65 IJ 8787895 Nowak Anna 11-12-59 KL 7657770 Smutny Waldemar 15-09-62 schemat relacji DANE_OSOBOWE(nr_dowodu, nazwisko, imię, data_ur) nr_dowodu nazwisko imię data_ur AB 2435209 Nowak Jan 05-05-53 CD 8574930 Kowalski Piotr 23-02-60 EF 3385778 Nowak Anna 01-12-59 GH 9938850 Bogucki Andrzej 03-03-65 IJ 8787895 Nowak Anna 11-12-59 KL 7657770 Smutny Waldemar 15-09-62 MN 6578001 Nowak Jan 05-05-53 WNIOSEK Klucz dobieramy poprzez analizę świata rzeczywistego. Zawartość tabeli jest odzwierciedleniem modelowanego świata tylko w pewnym okresie i może ona podlegać istotnym zmianom.
Integralność danych klucz obcy Kluczem obcym schematu S relacji nazywamy zbiór atrybutów FK tego schematu, który jest kluczem kandydującym pewnego schematu R relacji. RZEMIEŚLNIK_KTO RZEMIEŚLNIK_CO nazwisko adres NIP NIP wyrób cena Nowak Warszawa 774656 774656 naszyjnik 70 Nowak Opole 774875 773829 obrączki 120 Nowak Gdynia 773829 774656 kolczyki 12 Kowalski Kraków 786094 786094 naszyjnik 65 Kowalski Kraków 773521 786094 kolczyki 15 relacja nadrzędna relacja podrzędna
Integralność danych Wartość pusta (NULL) reprezentuje wartość atrybutu, która w danej chwili nie jest znana lub nie może zostać ustalona. Rodzaje relacyjnych więzów integralności: Integralność encji Każdy schemat relacji posiada klucz główny i żaden składnik klucza głównego nie akceptuje wartości pustej. Integralność referencyjna Każda wartość klucza obcego wynosi NULL lub jest równa wartości klucza kandydującego pewnej krotki w relacji nadrzędnej. Więzy ogólne Dodatkowe warunki poprawności danych określone przez użytkowników lub administratorów bazy danych.
Perspektywy w modelu relacyjnym Perspektywa to dynamicznie obliczany wynik jednej lub wielu operacji relacyjnych tworzących nową relację z relacji bazowych (relacji o schematach relacji należących do schematu bazy danych). Perspektywa jest relacją wirtualną (wyliczaną), która nie musi fizycznie istnieć w bazie danych, ale może być wyliczona w każdej chwili na żądanie użytkownika.
Perspektywy w modelu relacyjnym Perspektywy: stanowią silne i elastyczne narzędzie ochrony danych poprzez ukrywanie części bazy danych przez pewnymi użytkownikami, zapewniają użytkownikom dostęp do danych w sposób dostosowany do ich potrzeb dzięki temu różni użytkownicy mogą widzieć te same dane w różny sposób, mogą uprościć skomplikowane operacje na relacjach bazowych.
Perspektywy w modelu relacyjnym Perspektywy są dynamiczne zmiany w relacjach bazowych wpływające na perspektywę są natychmiast w niej uwzględniane. I odwrotnie, gdy użytkownik dokonuje dozwolonych zmian w perspektywie, to są one przenoszone do relacji bazowych. Ograniczenia modyfikowania danych poprzez perspektywy: Modyfikacje można wykonywać poprzez perspektywy zdefiniowane prostym zapytaniem dotyczącym jednej relacji bazowej. Perspektywa taka musi zawierać klucz główny relacji. Modyfikacji nie wolno dokonywać poprzez perspektywy dotyczące wielu relacji bazowych. Modyfikacji nie można wykonywać poprzez perspektywy zawierające operatory grupowania lub funkcje agregujące.
Koniec Dziękuję za uwage!!!