Wprowadzenie do problematyki baz danych
Zarys systemów baz danych ; modele świata rzeczywistego; modele danych
Model sieciowy bazy danych
Model relacyjny baz danych; schemat relacyjny; pojęcie klucza; postaci normalne schematu relacji
Projektowanie schematu relacyjnej bazy danych
Ochrona bazy danych przed niewłaściwym użyciem
Bezpieczeństwo statystycznych baz danych
1. W przypadku oprogramowania operującego na zbiorach danych zaprojektowanych specjalnie dla konkretnej aplikacji występuje separacja danych od opisu ich struktury
Użytkownicy jednej aplikacji z danej dziedziny mogą nie wiedzieć o potencjalnie użytecznych informacjach przechowywanych w sąsiednich aplikacjach
2. Powtarzanie się danych. Te same dane są przechowywane do wykorzystania przez różne programy , powoduje to stratę miejsca oraz możliwość pojawienia się różnych formatów danych , oraz różnych danych opisujących te same obiekty.
Struktura plików z danymi jest zdefiniowana w aplikacji , która z tych danych korzysta. Tym samym z danych tych nie może skorzystać żadna inna aplikacja , która nie ma wbudowanej definicji opisu struktury takiego pliku. W przypadku próby korzystania z obcych danych konieczne jest zaprojektowanie i wykonanie odpowiedniego filtra , który pozwoli na odczyt danych zapisanych w innym formacie. Odmienne struktury plików z danymi mogą być też wynikiem stosowania różnych języków ich tworzenia
3. Wszelkie zmiany struktury danych wymagają zmiany w oprogramowaniu , to z kolei jest źródłem błędów. W praktyce tego typu aplikacje budowane są zawsze do realizacji konkretnych zadań, wszelkie zmiany realizowanych zadań wymagają w praktyce stworzenia nowego oprogramowania.
Systemy baz danych zawdzięczają swój rozwój temu, że postanowiono zapisywać informacje o strukturze danych wraz z danymi. Informacje o ramowej strukturze danych zostały ustandaryzowane i umieszczone w aplikacjach utworzonych do tworzenia baz danych. Od tego czasu np. standardem stał się plik o rozszerzeniu *.dbf jako format zapisu baz. W wyniku tego rozwoju powstały bazy danych i systemy baz danych
Baza danych - jest współdzielną kolekcją logicznie powiązanych danych, oraz opisu tych danych zaprojektowaną dla realizacji potrzeb przechowywania informacji danej instytucji.
W bazie danych pojawia się szereg nowych pojęć należy do nich:
Katalog systemowy - w tym katalogu inaczej zwanym słownikiem lub metadanymi znajduje się opis pozwalający na uniezależnienie się danych od programu, który ma z nich korzystać .
Zawartość bazy danych- logicznie powiązane dane zawierają encje, atrybuty i zależności charakterystyczne dla danego zastosowania baz danych
Encja- wszystko co może być opisywane przez bazę danych ; mogą to być rzeczy zarówno materialne jak i niematerialne.
Atrybut- charakteryzuje cechy abstrakcyjnych obiektów umieszczonych w poszczególnych wierszach relacji(tabeli)
Wartość atrybutu-dopuszczalny zbór wartości jakie mogą przyjmować atrybuty ( np. Char(n), Varchar(n) itp.)
System zarządzania bazą danych - system oprogramowania umożliwiający użytkownikowi definiowanie , tworzenie i konserwację bazy danych , a także kontrolę nad dostępem do danych.
Języki zarządzania bazą danych:
Język DDL - Wykorzystywany do opisu bazy ( date definition language) pozwala na określenie typów danych , struktur i wszelakich ograniczeń nakładanych na dane. Wszystkie te specyfikacje są przechowywane w bazie danych.
Język DML- wykorzystywany do manipulowania danymi , tworzy zapytania.
Bazy danych , które mają zapewnić kontrolowany dostęp do danych czynią to przy pomocy jednego z następujących narzędzi :
System zabezpieczeń - hasło dostępu , udostępnienie tylko części danych , dostęp tylko do statystyki itp.
Integralność systemu- m.in. badanie zgodności danych z ograniczeniami na nie nałożonymi
Nadzór nad jednoczesnym dostępem do danych
System przywracania bazy sprzed awarii
Mechanizm perspektywy
Klasy użytkowników bazy danych :
Projektanci - osoby, które na zlecenie przyszłego użytkownika bazy danych dokonują analizy wycinka świata rzeczywistego oraz identyfikują te typy informacji i relacji występujących pomiędzy nimi, które są ważne dla użytkownika. Określają również rodzaj operacji jakie będą wykonywane na danych.
Realizatorzy, programiści systemowi, programiści zastosowaniowi - Ich zadaniem jest m.in. opracowanie i wprowadzenie do komputera (implementacja):
Schematów danych i ich zapisanie w dostępnym języku opisu schematów
Procedur wprowadzania, aktualizacji i usuwania danych
Procedur przeglądania i wyszukiwania danych
Procedur generowania sprawozdań , raportów i statystyk
Procedur wspomagania (Help)
Administrator bazy danych- jest to osoba odpowiedzialna za szeroko rozumiany stan bazy. Do zadań administratora należy m.in. : tworzenie i zmiana opisu bazy danych, odwzorowanie opisu w pamięci komputera, udzielenie użytkownikom zezwoleń na dostęp do całej lub części bazy danych oraz zezwoleń na rodzaj wykonywanych operacji na danych , wykonywanie archiwalnych kopii baz danych, przywracanie stanu bazy sprzed awarii itp.
Użytkownicy-można ich podzielić na dwie kategorie:
Użytkownik naiwny- ma niewielką wiedzę na temat bazy danych i sposobów
poruszania się w niej ; kontakt z bazą jest sporadyczny.
Użytkownik zaawansowany - jest specjalistą w dziedzinie informacji i użytkowania
baz , jego wiedza dotyczy przede wszystkim sprawnego nawigowania w systemie ,
zwłaszcza wyszukiwania i przygotowywania sprawozdań i raportów.
Rekundancja - zjawisko polegające na zapisywaniu danych w różnych miejscach (dane mogą być niejednakowo wpisane w różnych miejscach).
Zalety:
kontrola spójności danych
wiele informacji z tych samych danych (np. grupowanie danych w sieci)
współkorzystanie z danych - udostępnienie wielu użytkownikom tych samych danych w tym samym czasie
integralność bazy danych
polepszone bezpieczeństwo danych ( kopiowanie danych - administrator)
ułatwiony dostęp do danych
Wady:
koszt baz danych jest z reguły wyższy niż systemów baz danych, wydajność jest gorsza niż dla systemów budowanych dla konkretnych danych
Modele świata rzeczywistego
Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywamy Modelowaniem świata rzeczywistego. Z punktu widzenia projektanta baz danych , modelowanie rozpoczyna się od :
Wyselekcjonowania typu informacji jakie będą potrzebne użytkownikom bazy , etap ten nazywa się niekiedy konceptualizacją świata rzeczywistego
Zapisania ich w ustrukturalizowanej formie akceptowanej przez komputer . Odnosi się to do utworzenia tzw. „schematu danych” , czyli skonceptualizowanego wycinka w pewnym języku narzuconym przez komputer. Schemat bazy danych musi być zgodny z tzw. „modelem danych”, przez który rozumiemy pewien ustrukturalizowany, dobrze zdefiniowany sposób opisu świata rzeczywistego
wprowadzenie do komputera konkretnych danych odzwierciedlających stan świata rzeczywistego . Etap ten zwykle poprzedzony jest pewnymi operacjami wykonywanymi przez komputer na schemacie w celu utworzenia odpowiadających temu schematowi fizycznych struktur danych , polega na założeniu bazy danych.
Rodzaje modeli świata :
model sieciowy - świat opisany jest za pomocą grafów
model hierarchiczny - świat opisany jest za pomocą drzew
model logiczny - wykorzystywanie logiki do opisu świata
ARCHITEKTURA SYSTEMÓW ZARZĄDZANIA BAZAMI DANYCH
Dobra baza danych powinna spełniać:
wszyscy użytkownicy powinni mieć dostęp do tych samych danych
sposób w jaki użytkownik spostrzega bazę danych nie powinna się zmieniać dlatego , że inaczej widzi ją inny użytkownik
użytkownicy bazy danych nie muszą znać żadnych szczegółów w jaki sposób zapisywane są dane
poprawnie zaprojektowany system bazy danych oddziela perspektywy widoku bazy danych od jej faktycznego stanu
powinna być elastyczna
Architektura trójpoziomowa:
Poziom zewnętrzny ( punkt widzenia użytkownika)
Poziom pojęciowy ( model świata zapisanego w bazie danych ) - jakiego rodzaju dane są zapisywane w bazie , jakie są pomiędzy nimi powiązania
Poziom zewnętrzny ( gdzie są informacje, ilość plików , lokalizacja , rodzaj itp.)- fizyczna reprezentacja danych
Rozróżnienie pojęciowej i fizycznej bazy danych :
Pojęciowa(logiczna) : definicje , perspektywy
Fizyczna : pliki , rekordy
ENCJA- każdy przedmiot , zjawisko, stan lub pojęcie - każdy obiekt , który potrafimy (chcemy ) odróżnić od innych obiektów. Każdy obiekt dający się zidentyfikować na podstawie swoich atrybutów
Typy encji:
słabe - zależą od istnienia innej encji np. prawo jazdy zależy od tego czy istniej jego właściciel.
mocne- nie zależą od innych encji
ATRYBUTY- są to encje wynikające z ich natury, dające się wyrażać liczbami , bądź prostymi określeniami słownymi Atrybuty mogą być proste albo złożone.
Atrybut złożony - to atrybut składający się z wielu niezależnych składników.
KLUCZ:
Klucz kandydujący- to atrybut lub zbiór atrybutów, który jednoznacznie identyfikuje indywidualne wystąpienia encji danego typu.
Klucz główny- każda z encji może mieć wiele kluczy kandydujących ; jeden z nich wybrany przez twórcę bazy danych jest kluczem głównym
Klucz złożony- klucz, który składa się z więcej niż jednego atrybutu.
MODEL SIECIOWY
Model sieciowy można rozważać jako model związków encji ograniczonych do związków binarnych typu wiele do jednego. Dwoma zasadnicznymi elementami modelu sieciowego są:
Typy rekordów logicznych- są one podobne do zbiorów encji, składają się z nazwy typu i listy atrybutów. Elementami typów rekordów logicznych nazywa się rekordami ; są one odpowiednikiem encji z modelu związków encji.
Powiązania- są to binarne związki typu wiele do jeden. Łączą one dwa zbiory encji, jeden typu posiadacz drugi typu uczestnik. Powiązanie jest typu wiele do jeden od typu uczestnik do typu posiadacz, tzn. każdemu rekordowi typu uczestnik odpowiada dokładnie jeden rekord typu posiadacz, a każdemu rekordowi typu posiadacz odpowiada zero, jeden lub więcej rekordów typu uczestnik.
NORMALIZACJA
Proces normalizacji: jest to formalna def., która ma na celu aktualizowanie klucza głównego danej relacji i zależności funkcjonalne tej relacji.
Normalizację przechodzi się w szeregu kroków, osiągając kolejne postacie znormalizowane o specyficznych własnościach. W miarę postępu normalizacji format danych staje się coraz bardziej precyzyjny.
Postać nieznormalizowana: to tabela, która zawiera jedną lub więcej powtarzających się grup.
Cel normalizacji:
uniknięcie anomalii (są to możliwe źródła wad danych, które wynikają z dodawania, usuwania i modyfikacji danych. Pojawienie się anomalii wynika także ze sposobu zapisywania danych)
Redundancja danych- pojawienie się tych samych danych w różnych miejscach bazy danych.
Dekompozycja danych:
musimy odszukać komplet informacji o krotce wyjściowej korzystając z informacji zawartych w krotce wynikowej
dekompozycja oryginalnego ... - musi zachować informacje o zależnościach między atrybutami.
Zależność funkcjonalna: opisuje związki pomiędzy atrybutami danej relacji.
Przykładem zależności funkcjonalnej jest sytuacja, w której dla relacji R, której elementami są atrybuty A i B, mamy sytuację taką, że atrybut A zależy od atrybutu B w każdym przypadku, to możemy powiedzieć, że atrybut B jest funkcjonalnie zależny od atrybutu B.
R(A,B) ; A->B
A(pesel) ; B(nazwisko) ; pesel=>nazwisko
Zależność funkcjonalna obejmuje pojęcie atrybutu, który jest elementem określającym zawartość atrybutu wynikowego lub w miejsce tego jednego elementu może wystąpić grupa elementów. R(A,B,C) ; A,B=>C
Postaci normalne:
1NF
2NF
3NF
BCNF
4NF
5NF
1NF- postać, w której występują tylko informacje w postaci elementarnej na przecięciu wiersza i kolumny
Postępowanie przy normalizowaniu 1NF:
należy określić klucz główny relacji. Tym kluczem może być jeden lub więcej atrybutów.(klucz kandydujący)
należy zidentyfikować grupy powtórzeniowe, które występują jako wartości występujące w kluczu.
Należy usunąć powtarzające się grupy poprzez wprowadzenie odpowiednich danych w puste komórki w kolumnach i wierszach lub poprzez powtórzenie danych z kopią klucza.
Proces normalizacji rzadko daje w wyniku jedno rozwiązanie. Najczęściej proces normalizacji daje w wyniku wiele różnych schematów relacji z których jeden wybierany jest do budowy bazy danych. W uzasadnionych przypadkach dopuszcza się odstępstwa od postaci normalnych.
2NF- oparta jest na pojęciu pełnej zależności funkcjonalnej. Mogą w niej znajdywać się tylko te atrybuty, które są funkcjonalnie zależne.Pełna zależność funkcjonalna- ma miejsce wtedy jeśli atrybut B jest w pełni funkcjonalnie zależny od zbioru atrybutów A, ale nie jest funkcjonalnie zależny od żadnego z jego podzbiorów.
Zbiór identyfikujący relacji- to traki zbiór atrybutów relacji , który jednoznacznie identyfikuje wszystkie klucze(?) tej relacji, a żaden z jego podzbiorów nie ma tej własności.
W 2NF relacja jest:
także w 1NF
każdy atrybut nie wchodzący w skład klucza jest od niego funkcjonalnie zależny.
Tok postępowania przy normalizowaniu 2NF:
określić klucz główny dla relacji w 1NF
określić zależności funkcjonalne tej relacji
jeśli istniej zależność cząstkowa dla klucza głównego to te argumenty należy przenieść do nowo utworzonej relacji wraz z założonymi dla niej wartościami klucza głównego.
W przypadku występowania wielu kluczy kandydujących należy wybrać jeden z nich. Kryterium tego wyboru może być np.: liczba atrybutów wchodzących w skład klucza, tym samym należy wybierać klucze o najmniejszej ilości atrybutów.
Relacje(tabele) należy opatrywać nazwami, nazwy te powinny być adekwatne do zawartości tabeli.
3NF - jest oparta na przechodniej zależności funkcjonalnej( zależność, w której atrybut B jest funkcjonalnie zależny od atr. A , atrybut C jest funkcjonalnie zależny od atr. B, ale atrybut C nie zależy od B)
Relacja jest w 3NF wtedy jeśli jest w 1NF i 2NF oraz jeśli żaden atrybut nie wchodzący w skład klucza głównego nie jest funkcjonalnie zależny od klucza głównego.
Tok postępowania przy przejściu do 3NF:
należy określić klucz relacji będącej w 2NF
określić zależności funkcjonalne w tej relacji
jeśli występują zależności funkcjonalne przechodnie od klucza głównego to należy je usunąć przez przeniesienie ich do nowej relacji wraz z kopią ich klucza.
Postać normalna Boyce Codda (BCNF)
Oparta jest na zależnościach funkcjonalnych uwzględniających wszystkie klucze kandydujące danej relacji. Dla relacji, która ma tylko jeden klucz kandydujący 3NF i BCNF są równoważne. Relacja jest w postaci BCNF jeśli każdy klucz kandydujący wskazuje w sposób unikalny na ... wystąpienie danego elementu.
Pogwałcenie wymagań związanych może być sytuacja, w której w danej relacji występuje więcej niż jeden klucz złożony i taka sytuacja w której atrybuty kluczy się przekraczają.
Tok postępowania przy przejściu od 3NF do BCNF:
należy określić wszystkie klucze kandydujące w relacji
należy określić wszystkie zależności funkcjonalne w danej relacji. Jeśli w danej relacji występują zależności funkcjonalne, których atrybuty kluczowe nie są kluczami kandydującymi relacji to takie zależności funkcjonalne należy przenieść do nowej relacji wraz z kopią atrybutów kluczowych.
4NF - jest związana z pojęciem zależności wielowartościowych.(są to takie zależności pomiędzy atrybutami, w której dla każdej wartości zbioru atrybutów A mamy pewną grupę atrybutów B i jednocześnie mamy oddzielny zbiór atrybutów C , przy czym zbiór wartości atrybutów B i C są od siebie niezależne.)
Przejście do 4NF:
Relacja jest w 4NF jeśli jest w postaci BCNF i nie zawiera zależności wielowartościowej.
Przejście od relacji w postaci BCNF do 4NF polega na usunięciu zależności wielowartościowych poprzez przeniesienie atrybutów do nowej relacji wraz z kopią odpowiednich kluczy.
Projektowanie relacyjnej bazy danych
Zapoznanie się ze środowiskiem, w którym będzie funkcjonowała baza danych. Pod pojęciem środowiska rozumiemy przedsiębiorstwo i użytkowników systemu.
Należy opracować wykaz zadań, które mają być realizowane przez system. Dodatkowo należy sporządzić listę wymagań stawianych systemowi; lista taka pozwoli na określenie zbioru wymagań które mają zapewnić integralność danych. np. przyjmowanie zleceń klientów i archiwizacja tych zleceń dla celów księgowych i inwentarzowych.