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ę Pojęcia zwią związane z bazą bazą danych – Trwał Trwałość – dane mają być przechowywane przez pewien okres czasu, na ogół nieokreślony z góry – Zgodność Zgodność z rzeczywistoś rzeczywistością cią (integralność (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ż 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ą zarządzania bazą bazą danych danyc (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ł pełni ró 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ł 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 Poziom zewnę ętrzny Użytkownik A2 Zewnętrzny model danych A Schemat zewnętrzny A Odwzorowanie zewnętrzno-pojęciowe Poziom poję ęciowy Schemat pojęciowy Użytkownik B1 Zewnętrzny model danych B Odwzorowanie zewnętrzno-pojęciowe Pojęciowy model danych DBMS Odwzorowanie pojęciowo-wewnętrzne Schemat Poziom wewnę ętrzny 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 DBMS • Funkcje CRUD 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ń). Funkcje DBMS • Słownik danych 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. Funkcje DBMS • Obsługa transakcji 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 t1 T2 read(saldo) saldo 100 t2 read(saldo) t3 saldo=saldo-10 write(saldo) 200 t4 write(saldo) 90 t5 saldo=saldo+100 100 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. Funkcje DBMS • Obsługa autoryzacji 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 Administrator bazy 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 • • • • • • 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 ⊂ D1 × D2 ×...× Dk D1 × D2 ×...× Dk ={(a1, a2,...,ak ) : ai ∈Di ,i ∈{1,2,...,k}} 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 (Ai). • Atrybuty przyjmują wartości z określonego zbioru zwanego dziedziną (Di). • 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 {A1, ..., An} • Relacją r o schemacie R = {A1, ..., An} nazywamy skończony zbiór r = {t1, ..., tm} odwzorowań ti: R →D, gdzie D jest równe sumie dziedzin atrybutów A1, ..., An, takich, że ti(Aj)=Dj dla i=1,...,m, j=1,...,n. • Każde takie odwzorowanie nazywamy krotką. • Przykłład: R={Numer, Skąd, Dokąd, Odlot, Przylot} ti(Aj)={(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 rekord Nazwisko Kowalski Nowak Zielińska Imię Wiek Pensja Jan 35 360 Piotr 36 400 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 r 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ł właściwym (kandydują (kandydującym). cym) • Wśród kluczy wybiera się jeden i nazywa go się kluczem gł głównym. wnym Klucz schemat relacji DANE_OSOBOWE(nr_dowodu, nazwisko, imię, data_ur) nr_dowodu AB 2435209 CD 8574930 EF 3385778 GH 9938850 IJ 8787895 KL 7657770 nazwisko Nowak Kowalski Nowak Bogucki Nowak Smutny imię data_ur Jan 05-05-53 Piotr 23-02-60 Anna 01-12-59 Andrzej 03-03-65 Anna 11-12-59 Waldemar 15-09-62 Klucz schemat relacji DANE_OSOBOWE(nr_dowodu, nazwisko, imię, data_ur) nr_dowodu AB 2435209 CD 8574930 EF 3385778 GH 9938850 IJ 8787895 KL 7657770 nazwisko Nowak Kowalski Nowak Bogucki Nowak Smutny imię data_ur Jan 05-05-53 Piotr 23-02-60 Anna 01-12-59 Andrzej 03-03-65 Anna 11-12-59 Waldemar 15-09-62 schemat relacji DANE_OSOBOWE(nr_dowodu, nazwisko, imię, data_ur) nr_dowodu AB 2435209 CD 8574930 EF 3385778 GH 9938850 IJ 8787895 KL 7657770 MN 6578001 nazwisko Nowak Kowalski Nowak Bogucki Nowak Smutny Nowak imię data_ur Jan 05-05-53 Piotr 23-02-60 Anna 01-12-59 Andrzej 03-03-65 Anna 11-12-59 Waldemar 15-09-62 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 nazwisko adres NIP Nowak Warszawa 774656 Nowak Opole 774875 Nowak Gdynia 773829 Kowalski Kraków 786094 Kowalski Kraków 773521 relacja nadrzędna RZEMIEŚLNIK_CO NIP wyrób cena 774656 naszyjnik 70 773829 obrączki 120 774656 kolczyki 12 786094 naszyjnik 65 786094 kolczyki 15 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!!!