Wykład 7 - Bazy danych

Transkrypt

Wykład 7 - Bazy danych
Bazy danych
Zasady konstrukcji baz danych
Diagram związków encji
Cel: Opracowanie modelu logicznego danych
Diagram związków encji [ang. Entity-Relationship diagram]:
• zapewnia efektywne operacje na danych
• chroni przed anomaliami (wstawiania, usuwania, istnienia)
• pozwala zbudować systematyczny model rzeczywistości opisywanej
przez bazę danych
kod
PESEL
pracuje
Instytut
nazwisko
profil
Pracownik
imię
nazwa
prowadzi
Przedmiot
stanowisk
o
skrót
semestr
rodzaj
nazwa
2
Diagram związków encji
Encja
Encja – obiekt występujący w rzeczywistości
atrybut
Atrybut – cecha, właściwość obiektu lub związku
klucz
atrybut kluczowy (klucz)
klucz
klucz złożony z kilku atrybutów
klucz
związek
Związek – związek zachodzący pomiędzy obiektami
3
Diagram E-R
Uproszczenia
Pracownik
PESEL
Imię
Nazwisko
stanowisko
• włączenie atrybutów do symbolu encji
• pominięcie atrybutów na diagramie
(umieszczenie atrybutów w osobnym dokumencie)
• opuszczenie symbolu graficznego związku
(pozostaje tylko linia)
Pracownik
pracuje
Instytut
4
Rodzaje związków
1 – 1 (jedno-jednoznaczny)
prawdopodobnie można połączyć
encje ze sobą
Instytut
Pracownik
1 – wielu (jednoznaczny)
Odpowiada funkcji
każdy pracownik jest związany
tylko z jednym instytutem
Pracownik
Przedmiot
wiele – wielu (wieloznaczny)
każdy pracownik prowadzi grupę
(1 lub więcej) przedmiotów
5
Związki opcjonalne i rekurencyjne
Instytut
Pracownik
Pracownik
Związek opcjonalny
istnieją pracownicy nie przypisani
do żadnego instytutu (np. stróż)
Związek rekurencyjny
pracownik1 jest kierownikiem
pracowników
6
Podtypy i nadtypy
Towar
AGD
RTV
Podtypy - odmiany tej samej encji - nadtypu
• podobny zbiór atrybutów w encjach
• można określić wspólnym pojęciem
Konstrukcja nadtyp (typu uogólnionego)
• zbiór wszystkich pól podtypów
Narzędzia
• pola niewykorzystane = NULL
7
Modelowanie zbieżne
Poszukiwanie nadtypów
Próba łączenia podobnych encji
Zmniejszenie liczby encji w bazie danych
Większa elastyczność i abstrakcyjność modelu
Uproszczenie dostępu do danych
Zmniejszenie liczby złączeń (kosztem selekcji)
8
Abstrakcyjny model świata
Wartość atrybutu
dla
Struktura
Kwalifikowana
Zbudowany
jako
z
z
klasyfikacja
Typ struktury
z
dziedzina dla
Obiekt
część
z
dla
klasyfikacja
Atrybut
klasyfikacja
Typ atrybutu
z
z
z
klasyfikacja
klasyfikacja
Typ obiektu
rysunek z książki: Ulka Rodgers „ORACLE, przewodnik projektanta baz danych”
9
Diagram hierarchii funkcji
Cel zastosowania: Zapanowanie nad dużym projektem
Sprzedaż wysyłkowa
towarów
Zarządzanie finansami firmy
Zarządzanie pracownikami
Sprzedaż klientom
Zaopatrzenie
Na podstawie: Ulka Rodgers Oracle, przewodnik projektanta baz danych
10
Diagram hierarchii funkcji
Sprzedaż wysyłkowa
towarów
Zarządzanie finansami firmy
Płać dostawcom
Zarządzanie pracownikami
Obciążaj klientów
Sprzedaż klientom
Kontroluj stan finansów
Zaopatrzenie
Płać pracownikom
Na podstawie: Ulka Rodgers Oracle, przewodnik projektanta baz danych
11
Budowa modelu relacyjnego
na podstawie diagramu związków encji
Konwersja
Encja
→ Tabela
Atrybuty encji → Pola w tabeli
Związki encji → Relacje
Rozwinięcie związku wiele-wielu
Pracownik
Przedmiot
Każdy pracownik prowadzi grupę
(1 lub więcej) przedmiotów.
12
Budowa modelu relacyjnego
na podstawie diagramu związków encji
Konwersja
Encja
→ Tabela
Atrybuty encji → Pola w tabeli
Związki encji → Relacje
Rozwinięcie związku wiele-wielu
zastąpienie dwoma związkami 1-wielu
Pracownik
Każdy pracownik ma tylko jedną
listę prowadzonych przedmiotów.
Lista
przedm.
Przedmiot
Pozycja listy zawiera tylko jeden
przedmiot.
13
Realizacja związku 1-wielu
Instytut
Pracownik
Tabela Pracownicy
Tabela Instytuty
Instytut
IDA Nazwisko
Tytuł
Nazwa
IDI(klucz)
I-16 1
Kowalski
mgr
Instytut Metrologii
I-14
I-16 2
Nowak
dr
Instytut
Elektrotechniki
I-15
I-15 3
Dębski
mgr
I-14 4
Wrocławski mgr
Instytut Elektroniki
I-16
I-14 5
Kamiński
Tabela nadrzędna
dr
Tabela podrzędna
14
Integralność związku
Wartość klucza do której się odwołuje encja podrzędna
musi istnieć w encji nadrzędnej.
Tabela Pracownicy
Tabela Instytuty
Instytut
Nazwa
IDI(klucz)
Instytut Metrologii
I-14
Instytut
Elektrotechniki
I-15
Instytut Elektroniki
I-16
?
IDA Nazwisko
Tytuł
I-16 1
Kowalski
mgr
I-16 2
Nowak
dr
I-20 3
Dębski
mgr
I-14 4
Wrocławski mgr
I-14 5
Kamiński
dr
15
Integralność związku
Utrzymywanie integralności przez system (opcjonalne)
- system nie pozwala dodać danych naruszających integralność
- postępowanie przy usuwaniu rekordów encji nadrzędnej
• usuwanie kaskadowe (rekordów powiązanych)
• blokada usuwania jeśli istnieją powiązane rekordy
- postępowanie przy modyfikacji wartości klucza
• blokada pola klucza
• kaskadowe uaktualnianie w tabelach podrzędnych
16
Klucze, zależność funkcyjna
Klucz główny
minimalny zbiór pól (pole) na podstawie których można
jednoznacznie zidentyfikować każdy rekord
Klucz obcy
odwołanie do klucza głównego innej tabeli
Zależność funkcyjna ( istnienie funkcji )
Pomiędzy zbiorem pól A oraz polem b zachodzi zależność
funkcyjna jeśli wartość pola b można jednoznacznie określić na
podstawie wartości pól zbioru A.
A→b
17
Klucz główny
Tabela: lista przedmiotów prowadzonych przez nauczycieli
IDnauczyciela Skrót_przedmiotu LiczbaGodzin
10
ALG
5
10
ANAL
30
11
ALG
10
12
TPROB
15
12
ANAL
30
13
TMNOG
45
Klucz główny tabeli: IDnauczyciela i Skrót_przedmiotu
18
Klucz obcy
Tabela: lista przedmiotów prowadzonych przez nauczycieli
IDnauczyciela
Skrót_przedmiotu LiczbaGodzin
10
ALG
5
10
ANAL
30
11
ALG
10
12
TPROB
15
12
ANAL
30
13
TMNOG
45
Dwa klucze obce tabeli:
1. IDnauczyciela
2. Skrót_przedmiotu
19
Zależność funkcyjna
Tabela: lista przedmiotów prowadzonych przez nauczycieli
IDn SkrPrzedm LiczbaGodzin
10
ALG
5
10
ANAL
30
11
ALG
10
12
TPROB
15
12
ANAL
30
13
TMNOG
45
Zależność funkcyjna:
(IDn, SkrPrzedm) → LiczbaGodzin
Brak zależności funkcyjnej:
(IDn) → SkrPrzedm
(IDn) → LiczbaGodzin
...
20
Normalizacja tabel
Normalizacja:
• doprowadzanie tabel do postaci umożliwiającej efektywne
wykonywanie operacji na danych
• uniknięcie anomalii przy zmianach danych
• podział tabeli (pola) na kilka tabel (pól)
Tabele utworzone na podstawie diagramu E-R są znormalizowane.
Formy normalne [ang. Normal Form = NF]:
• numeracja form 1NF, 2NF, ...
• zawieranie się form normalnych w sobie (tabela w 3NF jest w 2NF)
21
Pierwsza i druga postać normalna
1NF – każde pole zawiera niepodzielną część informacji
2NF – każde pole niekluczowe zależy jedynie od całego klucza
głównego (nie można znaleźć zależności funkcyjnej
od części klucza)
Jak wykryć postać „nie 2NF”?
Należy sprawdzić czy istnieją pola, które zależą tylko od
podzbióru (części) klucza głównego
Jak doprowadzić do 2NF?
Podział na dwie związane tabele.
Anomalie w „nie 2NF”
Anomalia usuwania, aktualizacji, istnienia
22
Tabele nie spełniające 2NF
Tabela: lista rachunków za telefony (tylko jeden w miesiącu)
NRklienta
Nazwisko Imię
Telefon
Data
Kwota
102034
Nowak
Jan
656-23-00
10-01
34,56
102034
Nowak
Jan
656-23-00
11-02
40,50
103000
Kowalska Anna
724-00-01
12-04
120,00
103000
Kowalska Anna
724-00-01
10-01
30,45
103000
Kowalska Anna
724-00-01
9-02
100,32
301988
Woźniak
Stefan
546-00-23
5-01
80,87
301988
Woźniak
Stefan
546-00-23
6-02
70,65
Klucz główny: (NRklienta i Data)
Zależności funkcyjne:
(NRklienta) → Nazwisko, Imię, Telefon
(Data, NRklienta) → Kwota
23
Anomalie gdy nie jest spełniona 2NF
Tabela: lista rachunków za telefony (tylko jeden w miesiącu)
NRklienta
Nazwisko Imię
Telefon
Data
Kwota
102034
Nowak
Jan
656-23-00
10-01
34,56
102034
Nowak
Jan
656-23-00
11-02
40,50
103000
Kowalska Anna
724-00-01
12-04
120,00
103000
Kowalska Anna
724-00-01
10-01
30,45
103000
Kowalska Anna
724-00-01
9-02
100,32
301988
Woźniak
Stefan
546-00-23
5-01
80,87
301988
Woźniak
Stefan
546-00-23
6-02
70,65
Anomalie:
Nie można dodać klienta, który jeszcze nie zapłacił rachunku
Zmiana telefonu dla jednego klienta musi być wykonywana w wielu miejscach
24
Normalizacja do 2NF
Podział na dwie tabele: Klienci i Rachunki
NRklienta
Nazwisko Imię
Telefon
Data
Kwota
102034
Nowak
Jan
656-23-00
10-01
34,56
102034
Nowak
Jan
656-23-00
11-02
40,50
103000
Kowalska Anna
724-00-01
12-04
120,00
103000
Kowalska Anna
724-00-01
10-01
30,45
103000
Kowalska Anna
724-00-01
9-02
100,32
301988
Woźniak
Stefan
546-00-23
5-01
80,87
301988
Woźniak
Stefan
546-00-23
6-02
70,65
Klucz główny: (NRklienta i Data)
Zależności funkcyjne:
(NRklienta) → Nazwisko, Imię, Telefon
(Data, NRklienta) → Kwota
25
Normalizacja do 2NF
Tabela Rachunki
NRk
Tabela Klienci
NRklienta
Nazwisko Imię
Telefon
102034
Nowak
656-23-00
103000
Kowalska Anna
724-00-01
301988
Woźniak
546-00-23
Jan
Stefan
Klucz główny: (NRklienta)
Data
Kwota
102034
10-01
34,56
102034
11-02
40,50
103000
12-04
120,00
103000
10-01
30,45
103000
9-02
100,32
301988
5-01
80,87
301988
6-02
70,65
Klucz główny: (NRk i Data)
Klucz obcy:
(NRk)
26
Trzecia postać normalna
3NF – nie istnieją zależności funkcyjne pól od innych pól
niekluczowych
Jak wykryć nie 3NF?
Należy sprawdzić czy istnieją pola, które zależą
tylko od innych pól
Jak doprowadzić do 3NF?
Podział na dwie związane tabele.
Anomalie w „nie 3NF”
istnienia i modyfikacji
27
Anomalie gdy nie jest spełniona 3NF
Tabela Pracownicy
NRpracownika
Nazwisko
Imię
Stanowisko Średnie zarobki
102034
Nowak
Jan
profesor
3000
102035
Nowak
Janina
adiunkt
2500
103000
Kowalska
Anna
adiunkt
2500
103103
Kowalczyk Tomasz
asystent
2000
103000
Kowalski
Dariusz
asystent
2000
301988
Woźniak
Stefan
asystent
2000
Klucz: (NRpracownika)
Anomalie aktualizacji i istnienia:
Zmiana wynagrodzenia osób na określonym stanowisku musi być
wykonywana w wielu miejscach.
Nie można wprowadzić nowego stanowiska bez konkretnej osoby
28
Normalizacja do 3NF
Podział na dwie tabele: Pracownicy, „wynagrodzenie na stanowisku”
NRpracownika
Nazwisko
Imię
Stanowisko Średnie zarobki
102034
Nowak
Jan
profesor
3000
102035
Nowak
Janina
adiunkt
2500
103000
Kowalska
Anna
adiunkt
2500
103103
Kowalczyk Tomasz
asystent
2000
103000
Kowalski
Dariusz
asystent
2000
301988
Woźniak
Stefan
asystent
2000
Klucz: (NRpracownika)
Zależność funkcyjna: Stanowisko → Średnie zarobki
29
Normalizacja do 3NF
Tabela „wynagrodzenie
na stanowisku”
Tabela Pracownicy
NRpracownik
a
Nazwisko
Imię
Stanowisko
102034
Nowak
Jan
102035
Nowak
103000
Kowalska
103103
Kowalczyk Tomasz
asystent
103000
Kowalski
Dariusz
asystent
301988
Woźniak
Stefan
asystent
Stanow. Średnie zarobki
profesor
3000
profesor
adiunkt
2500
Janina
adiunkt
asystent
2000
Anna
adiunkt
Klucz: (Stanow.)
Klucz główny: (NRpracownika)
Klucz obcy: Stanowisko
30
Aktualność a rejestracja historii
Normalizacja
– pozwala przechowywać aktualne dane w jednym miejscu
– upraszcza modyfikowanie danych
Rejestracja historii
– zachowanie wartości z określonej chwili czasowej
– niezmienność wartości w istniejących dokumentach
– aktualna wartość dla nowo tworzonych dokumentów
– realizacja przez kopiowanie do jednej tabeli wartości z
innych związanych tabel
– problem wprowadzania poprawek do wystawionych dokumentów
31
Wielostanowiskowe
bazy danych
Zagadnienia wykładu
• Architektura klient-serwer
• Problemy równoczesnego dostępu do bazy danych
• Blokowanie dostępu do przetwarzanych danych
• Transakcje
33
Zapotrzebowanie
• Wspólna baza danych
• Jednoczesny dostęp wielu użytkowników
• Współbieżne wykonywanie operacji
Użytkownik 1
Użytkownik 3
Baza
danych
Użytkownik 4
Użytkownik 2
Użytkownik 5
34
Architektura klient-serwer
Serwer
• Podział na dwa procesy
• Klient – wydaje polecenia
• Serwer – realizuje polecenia i zwraca wynik
• Możliwość konfiguracji sieciowej
Klient
35
Architektura klient-serwer
• Podział na dwa procesy
Serwer
• Klient – wydaje polecenia
• Serwer – realizuje polecenia i zwraca wynik
• Możliwość konfiguracji sieciowej
Klient 3
Klient 1
Klient 2
36
Struktura aplikacji bazy danych
System Bazy
Danych
SQL
Serwer SQL
Implementacja
modelowanych
pojęć i reguł
poprawności
• Różne możliwości podziału na części
„klient” i „serwer”:
- uniwersalny serwer bazy danych (SQL)
- serwer dostosowany do określonego zadania
• Bezpieczeństwo bazy danych
• Ilość przesyłanych danych
Interfejs
użytkownika
Klient
37
Struktura aplikacji bazy danych
System Bazy
Danych
• Różne możliwości podziału na części
„klient” i „serwer”:
SQL
- uniwersalny serwer bazy danych (SQL)
Implementacja
modelowanych
pojęć i reguł
poprawności
Serwer
- serwer dostosowany do określonego zadania
• Bezpieczeństwo bazy danych
• Ilość przesyłanych danych
Interfejs
użytkownika
Klient
38
Problemy równoczesnego dostępu
Stracona modyfikacja
NR operacji
Od
Do
Kwota
102
112400
112088
1000,00
Pobranie treści tego samego rekordu
Użytkownik 1
NRop Od
102
Do
Użytkownik 2
Kwota
112400 112088 1000,00
NRop Od
102
Do
Kwota
112400 112088 1000,00
39
Problemy równoczesnego dostępu
Stracona modyfikacja
NR operacji
Od
Do
Kwota
102
112400
112088
1000,00
Pobranie treści tego samego rekordu
Użytkownik 1
NRop Od
102
Do
Użytkownik 2
Kwota
112400 112088 1200,00
NRop Od
102
Do
Kwota
112400 112088 1000,00
Modyfikacja pola Kwota
40
Problemy równoczesnego dostępu
Stracona modyfikacja
NR operacji
Od
Do
Kwota
102
112400
112088
1000,00
Użytkownik 1
NRop Od
102
Do
Użytkownik 2
Kwota
112400 112088 1200,00
NRop Od
102
Do
Kwota
112400 143000 1000,00
Modyfikacja pola „Do”
41
Problemy równoczesnego dostępu
Stracona modyfikacja
NR operacji
Od
Do
Kwota
102
112400
112088
1200,00
Zwrócenie rekordu do bazy
Użytkownik 1
NRop Od
102
Do
Użytkownik 2
Kwota
112400 112088 1200,00
NRop Od
102
Do
Kwota
112400 143000 1000,00
Modyfikacja pola „Do”
42
Problemy równoczesnego dostępu
Stracona modyfikacja
NR operacji
Od
Do
Kwota
102
112400
143000
1000,00
Zwrócenie rekordu do bazy
Użytkownik 1
Użytkownik 2
NRop Od
102
Do
Kwota
112400 143000 1000,00
43
Problemy równoczesnego dostępu
Stracona modyfikacja
Jest:
NR operacji
Od
Do
Kwota
102
112400
143000
1000,00
NR operacji
Od
Do
Kwota
102
112400
143000
1200,00
Powinno być:
44
Problemy równoczesnego dostępu
Odczytanie nieaktualnych danych
Niedopuszczalny debet na koncie.
NRrachunku
Saldo
10203
1000,00
Opłata 1.
Kwota 800zł
Opłata 2.
Kwota 400zł
45
Problemy równoczesnego dostępu
Odczytanie nieaktualnych danych
Niedopuszczalny debet na koncie.
NRrachunku
Saldo
10203
1000,00
Sprawdzenie stanu konta
Opłata 1.
Kwota 800zł
Opłata 2.
Kwota 400zł
Stan konta 1000zł
46
Problemy równoczesnego dostępu
Odczytanie nieaktualnych danych
Niedopuszczalny debet na koncie.
NRrachunku
Saldo
10203
1000,00
Sprawdzenie stanu konta
Opłata 1.
Kwota 800zł
Opłata 2.
Kwota 400zł
Stan konta 1000zł
47
Problemy równoczesnego dostępu
Odczytanie nieaktualnych danych
Niedopuszczalny debet na koncie.
NRrachunku
Saldo
10203
200,00
Realizacja opłaty 1.
-800zł
Opłata 1.
Kwota 800zł
Opłata 2.
Kwota 400zł
48
Problemy równoczesnego dostępu
Odczytanie nieaktualnych danych
Niedopuszczalny debet na koncie.
NRrachunku
Saldo
10203
– 200,00
Debet
na koncie
200zł
Realizacja opłaty 2.
-400zł
Opłata 1.
Kwota 800zł
Opłata 2.
Kwota 400zł
49
Blokowanie dostępu do danych
Rodzaj blokady
Uprawnienie
zakładającego
Uprawnienia
innych
tylko do odczytu
odczyt
odczyt
do zapisu
odczyt i zapis
odczyt
wyłączność
odczyt i zapis
brak dostępu
Granulacja blokady:
• baza danych,
• tabela,
• zestaw rekordów,
• rekord,
• pole
50
Zakleszczenie
Wzajemne zablokowanie się dwóch procesów, spowodowane
zakładaniem blokad na wspólne dane.
Przykład
Założenie
blokady
Tabela A
Proces 1
Założenie
blokady
Proces 2
Tabela B
51
Zakleszczenie
Wzajemne zablokowanie się dwóch procesów, spowodowane
zakładaniem blokad na wspólne dane.
Przykład
Tabela A
Proces 1
Próba założenia
blokady,
oczekiwanie na
zwolnienie blokady
Próba założenia
blokady,
oczekiwanie na
zwolnienie blokady
Proces 2
Tabela B
52
Rozwiązanie problemu zakleszczenia
• Blokowanie wszystkich obiektów na początku, usuwanie
blokad na zakończenie ciągu operacji
• Systemowe wykrywanie zakleszczenia (rozwiązanie blokad,
anulowanie procesów)
• Przeterminowanie blokady (nie wolno zablokować obiektu
na zbyt długo)
53
Transakcja
Niepodzielny ciąg operacji na danych, który może być
wykonany w całości albo wcale.
Przykład
Rezerwacja biletów lotniczych przy podróży z przesiadką:
Warszawa -> Paryż -> Nowy Jork
SET TRANSACTION READ WRITE
rezerwacja biletu Warszawa-Paryż
ciąg operacji
rezerwacja biletu Paryż-Nowy Jork
COMMIT albo ROLLBACK
Zatwierdzenie
Anulowanie
Transakcja
54
Cechy transakcji
• Niepodzielność – transakcja może być wykonana
w całości albo wcale
• Spójność – po wykonaniu transakcji, dane w bazie danych muszą
być spójne; transakcja nie może naruszyć reguł poprawności
(np. nie można przydzielić jednego miejsca w samolocie
dwóm osobom)
• Izolacja – transakcje powinny być tak wykonywane jak gdyby
były wykonywane po kolei, oddzielnie
• Trwałość – zakończenie transakcji oznacza, że wprowadzono
wynik do bazy danych (nawet gdyby wystąpiła awaria)
55
Przykład operacji bez użycia transakcji
Realizacja przelewu bankowego:
z konta 102030 na konto 400023 należy przelać kwotę 1000zł
krok 1: zmniejszyć stan konta 102030 o kwotę 1000zł
Awaria
krok 2: zwiększyć stan konta 400023 o kwotę 1000zł
Wynik: Konto 102030, zmniejszono saldo o kwotę 1000zł
Konta 400023 bez zmian (nie wpłynęły pieniądze)
Jak gdyby po drodze zgubiono pieniądze
56