bazy danych - skibd -...
TRANSCRIPT
2
Diagram związków encjiCel: 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
Pracownik
Instytut
Przedmiotprowadzi
pracuje
kod
nazwa
profil
skrót
nazwa
semestr
rodzaj
PESEL
nazwisko
imię
stanowisko
3
Diagram związków encji
Encja – obiekt występujący w rzeczywistości
Atrybut – cecha, właściwość obiektu lub związku
atrybut kluczowy (klucz)
klucz złożony z kilku atrybutów
Związek – związek zachodzący pomiędzy obiektami
Encja
atrybut
związek
klucz
klucz
klucz
4
Diagram E-R
Uproszczenia
• 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)
PracownikPESELImięNazwiskostanowisko
Pracownik Instytutpracuje
5
Rodzaje związków 1 – 1 (jedno-jednoznaczny) prawdopodobnie można połączyć encje ze sobą
1 – wielu (jednoznaczny)Odpowiada funkcji
każdy pracownik jest związany tylko z jednym instytutem
wiele – wielu (wieloznaczny)
każdy pracownik prowadzi grupę (1 lub więcej) przedmiotów
Pracownik Przedmiot
Instytut Pracownik
6
Związki opcjonalne i rekurencyjne
Związek opcjonalny istnieją pracownicy nie przypisani do żadnego instytutu (np. stróż)
Związek rekurencyjnypracownik1 jest kierownikiempracowników
Instytut Pracownik
Pracownik
7
Podtypy i nadtypy
Podtypy - odmiany tej samej encji - nadtypu
• podobny zbiór atrybutów w encjach
• można określić wspólnym pojęciem AGD
RTV
Narzędzia
Towar
Konstrukcja nadtyp (typu uogólnionego)
• zbiór wszystkich pól podtypów
• pola niewykorzystane = NULL
8
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)
9
Abstrakcyjny model świata
Typ obiektu
Struktura Obiekt Atrybut Typ atrybutu
Wartość atrybutu
Typ struktury
z
klasyfikacja
zz
Zbudowany jako
część
Kwalifikowana
dla dla z
dziedzina dla klasyfikacja
klasyfikacja
zzz
klasyfikacjaklasyfikacja
rysunek z książki: Ulka Rodgers „ORACLE, przewodnik projektanta baz danych”
10
Diagram hierarchii funkcji Cel zastosowania: Zapanowanie nad dużym projektem
Sprzedaż wysyłkowatowarów
Zarządzanie finansami firmy
Zarządzanie pracownikami
Sprzedaż klientom
Zaopatrzenie
Na podstawie: Ulka Rodgers Oracle, przewodnik projektanta baz danych
11
Diagram hierarchii funkcji
Sprzedaż wysyłkowatowarów
Zarządzanie finansami firmy
Zarządzanie pracownikami
Sprzedaż klientom
Zaopatrzenie
Na podstawie: Ulka Rodgers Oracle, przewodnik projektanta baz danych
Płać dostawcom
Obciążaj klientów
Kontroluj stan finansów
Płać pracownikom
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
Pracownik Przedmiot
Każdy pracownik prowadzi grupę (1 lub więcej) przedmiotów.
13
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-wieluzastąpienie dwoma związkami 1-wielu
Pracownik PrzedmiotLista przedm.
Każdy pracownik ma tylko jedną listę prowadzonych przedmiotów.
Pozycja listy zawiera tylko jedenprzedmiot.
14
Realizacja związku 1-wielu
Instytut IDA Nazwisko Tytuł
I-16 1 Kowalski mgrI-16 2 Nowak drI-15 3 Dębski mgrI-14 4 Wrocławski mgrI-14 5 Kamiński dr
Nazwa IDI(klucz)
Instytut Metrologii I-14Instytut Elektrotechniki
I-15
Instytut Elektroniki I-16
Instytut Pracownik
Tabela InstytutyTabela Pracownicy
Tabela nadrzędnaTabela podrzędna
15
Integralność związku
Instytut IDA Nazwisko Tytuł
I-16 1 Kowalski mgrI-16 2 Nowak drI-20 3 Dębski mgrI-14 4 Wrocławski mgrI-14 5 Kamiński dr
Nazwa IDI(klucz)
Instytut Metrologii I-14Instytut Elektrotechniki
I-15
Instytut Elektroniki I-16
Tabela InstytutyTabela Pracownicy
?
Wartość klucza do której się odwołuje encja podrzędna musi istnieć w encji nadrzędnej.
16
Integralność związkuUtrzymywanie 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
17
Klucze, zależność funkcyjnaKlucz głównyminimalny zbiór pól (pole) na podstawie których można jednoznacznie zidentyfikować każdy rekord
Klucz obcyodwoł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
18
Klucz główny
IDnauczyciela Skrót_przedmiotu LiczbaGodzin10 ALG 510 ANAL 3011 ALG 1012 TPROB 1512 ANAL 3013 TMNOG 45
Tabela: lista przedmiotów prowadzonych przez nauczycieli
Klucz główny tabeli: IDnauczyciela i Skrót_przedmiotu
19
Klucz obcy
IDnauczyciela Skrót_przedmiotu LiczbaGodzin10 ALG 510 ANAL 3011 ALG 1012 TPROB 1512 ANAL 3013 TMNOG 45
Tabela: lista przedmiotów prowadzonych przez nauczycieli
Dwa klucze obce tabeli: 1. IDnauczyciela 2. Skrót_przedmiotu
20
Zależność funkcyjna
IDn SkrPrzedm LiczbaGodzin10 ALG 510 ANAL 3011 ALG 1012 TPROB 1512 ANAL 3013 TMNOG 45
Tabela: lista przedmiotów prowadzonych przez nauczycieli
Zależność funkcyjna: (IDn, SkrPrzedm) → LiczbaGodzin
Brak zależności funkcyjnej: (IDn) → SkrPrzedm (IDn) → LiczbaGodzin ...
21
Normalizacja tabelNormalizacja:• 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)
22
Pierwsza i druga postać normalna
2NF – każde pole niekluczowe zależy jedynie od całego kluczagłó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
1NF – każde pole zawiera niepodzielną część informacji
23
Tabele nie spełniające 2NF
NRklienta Nazwisko Imię Telefon Data Kwota102034 Nowak Jan 656-23-00 10-01 34,56102034 Nowak Jan 656-23-00 11-02 40,50103000 Kowalska Anna 724-00-01 12-04 120,00103000 Kowalska Anna 724-00-01 10-01 30,45103000 Kowalska Anna 724-00-01 9-02 100,32301988 Woźniak Stefan 546-00-23 5-01 80,87301988 Woźniak Stefan 546-00-23 6-02 70,65
Tabela: lista rachunków za telefony (tylko jeden w miesiącu)
Klucz główny: (NRklienta i Data)(NRklienta) → Nazwisko, Imię, Telefon(Data, NRklienta) → Kwota
Zależności funkcyjne:
24
Anomalie gdy nie jest spełniona 2NF
NRklienta Nazwisko Imię Telefon Data Kwota102034 Nowak Jan 656-23-00 10-01 34,56102034 Nowak Jan 656-23-00 11-02 40,50103000 Kowalska Anna 724-00-01 12-04 120,00103000 Kowalska Anna 724-00-01 10-01 30,45103000 Kowalska Anna 724-00-01 9-02 100,32301988 Woźniak Stefan 546-00-23 5-01 80,87301988 Woźniak Stefan 546-00-23 6-02 70,65
Tabela: lista rachunków za telefony (tylko jeden w miesiącu)
Anomalie:Nie można dodać klienta, który jeszcze nie zapłacił rachunkuZmiana telefonu dla jednego klienta musi być wykonywana w wielu miejscach
25
Normalizacja do 2NF
NRklienta Nazwisko Imię Telefon Data Kwota102034 Nowak Jan 656-23-00 10-01 34,56102034 Nowak Jan 656-23-00 11-02 40,50103000 Kowalska Anna 724-00-01 12-04 120,00103000 Kowalska Anna 724-00-01 10-01 30,45103000 Kowalska Anna 724-00-01 9-02 100,32301988 Woźniak Stefan 546-00-23 5-01 80,87301988 Woźniak Stefan 546-00-23 6-02 70,65
Podział na dwie tabele: Klienci i Rachunki
Klucz główny: (NRklienta i Data)(NRklienta) → Nazwisko, Imię, Telefon(Data, NRklienta) → Kwota
Zależności funkcyjne:
26
Normalizacja do 2NF
NRklienta Nazwisko Imię Telefon102034 Nowak Jan 656-23-00103000 Kowalska Anna 724-00-01301988 Woźniak Stefan 546-00-23
Tabela Klienci
Klucz główny: (NRklienta)
Tabela RachunkiNRk Data Kwota102034 10-01 34,56102034 11-02 40,50103000 12-04 120,00103000 10-01 30,45103000 9-02 100,32301988 5-01 80,87301988 6-02 70,65
Klucz główny: (NRk i Data) Klucz obcy: (NRk)
27
Trzecia postać normalna3NF – 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
28
Anomalie gdy nie jest spełniona 3NF
NRpracownika Nazwisko Imię Stanowisko Średnie zarobki102034 Nowak Jan profesor 3000102035 Nowak Janina adiunkt 2500103000 Kowalska Anna adiunkt 2500103103 Kowalczyk Tomasz asystent 2000103000 Kowalski Dariusz asystent 2000301988 Woźniak Stefan asystent 2000
Tabela Pracownicy
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
29
Normalizacja do 3NF
NRpracownika Nazwisko Imię Stanowisko Średnie zarobki102034 Nowak Jan profesor 3000102035 Nowak Janina adiunkt 2500103000 Kowalska Anna adiunkt 2500103103 Kowalczyk Tomasz asystent 2000103000 Kowalski Dariusz asystent 2000301988 Woźniak Stefan asystent 2000
Podział na dwie tabele: Pracownicy, „wynagrodzenie na stanowisku”
Klucz: (NRpracownika)
Zależność funkcyjna: Stanowisko → Średnie zarobki
30
Normalizacja do 3NF
NRpracownika
Nazwisko Imię Stanowisko
102034 Nowak Jan profesor102035 Nowak Janina adiunkt103000 Kowalska Anna adiunkt103103 Kowalczyk Tomasz asystent103000 Kowalski Dariusz asystent301988 Woźniak Stefan asystent
Tabela Pracownicy
Klucz główny: (NRpracownika)Klucz obcy: Stanowisko
Stanow. Średnie zarobkiprofesor 3000adiunkt 2500asystent 2000
Tabela „wynagrodzenie na stanowisku”
Klucz: (Stanow.)
31
Aktualność a rejestracja historiiNormalizacja – 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
33
Zagadnienia wykładu
• Architektura klient-serwer
• Problemy równoczesnego dostępu do bazy danych
• Blokowanie dostępu do przetwarzanych danych
• Transakcje
34
Zapotrzebowanie
• Wspólna baza danych
• Jednoczesny dostęp wielu użytkowników
• Współbieżne wykonywanie operacji
Baza danych
Użytkownik 1
Użytkownik 2
Użytkownik 3
Użytkownik 4
Użytkownik 5
35
Architektura klient-serwer
Serwer
Klient
• Podział na dwa procesy• Klient – wydaje polecenia• Serwer – realizuje polecenia i zwraca wynik• Możliwość konfiguracji sieciowej
36
Architektura klient-serwer
Serwer
Klient 1
• Podział na dwa procesy• Klient – wydaje polecenia• Serwer – realizuje polecenia i zwraca wynik• Możliwość konfiguracji sieciowej
Klient 2
Klient 3
37
Serwer SQL
Klient
Struktura aplikacji bazy danychSystem Bazy
Danych
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
SQL
38
Serwer
Klient
Struktura aplikacji bazy danychSystem Bazy
Danych
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
SQL
39
Problemy równoczesnego dostępuStracona modyfikacja
NR operacji Od Do Kwota102 112400 112088 1000,00
Użytkownik 1 Użytkownik 2Pobranie treści tego samego rekordu
NRop Od Do Kwota102 112400 112088 1000,00
NRop Od Do Kwota102 112400 112088 1000,00
40
Problemy równoczesnego dostępuStracona modyfikacja
NR operacji Od Do Kwota102 112400 112088 1000,00
Użytkownik 1 Użytkownik 2Pobranie treści tego samego rekordu
NRop Od Do Kwota102 112400 112088 1200,00
NRop Od Do Kwota102 112400 112088 1000,00
Modyfikacja pola Kwota
41
Problemy równoczesnego dostępuStracona modyfikacja
NR operacji Od Do Kwota102 112400 112088 1000,00
Użytkownik 1 Użytkownik 2
NRop Od Do Kwota102 112400 112088 1200,00
NRop Od Do Kwota102 112400 143000 1000,00
Modyfikacja pola „Do”
42
Problemy równoczesnego dostępuStracona modyfikacja
NR operacji Od Do Kwota102 112400 112088 1200,00
Użytkownik 1 Użytkownik 2
Zwrócenie rekordu do bazy
NRop Od Do Kwota102 112400 112088 1200,00
NRop Od Do Kwota102 112400 143000 1000,00
Modyfikacja pola „Do”
43
Problemy równoczesnego dostępuStracona modyfikacja
NR operacji Od Do Kwota102 112400 143000 1000,00
Użytkownik 1 Użytkownik 2
Zwrócenie rekordu do bazy
NRop Od Do Kwota102 112400 143000 1000,00
44
Problemy równoczesnego dostępuStracona modyfikacja
NR operacji Od Do Kwota102 112400 143000 1000,00
NR operacji Od Do Kwota102 112400 143000 1200,00
Jest:
Powinno być:
45
Problemy równoczesnego dostępuOdczytanie nieaktualnych danychNiedopuszczalny debet na koncie.
NRrachunku Saldo10203 1000,00
Opłata 1.Kwota 800zł
Opłata 2.Kwota 400zł
46
Problemy równoczesnego dostępuOdczytanie nieaktualnych danychNiedopuszczalny debet na koncie.
NRrachunku Saldo10203 1000,00
Opłata 1.Kwota 800zł
Opłata 2.Kwota 400zł
Sprawdzenie stanu konta
Stan konta 1000zł
47
Problemy równoczesnego dostępuOdczytanie nieaktualnych danychNiedopuszczalny debet na koncie.
NRrachunku Saldo10203 1000,00
Opłata 1.Kwota 800zł
Opłata 2.Kwota 400zł
Sprawdzenie stanu konta
Stan konta 1000zł
48
Problemy równoczesnego dostępuOdczytanie nieaktualnych danych Niedopuszczalny debet na koncie.
NRrachunku Saldo10203 200,00
Opłata 1.Kwota 800zł
Opłata 2.Kwota 400zł
Realizacja opłaty 1.-800zł
49
Problemy równoczesnego dostępuOdczytanie nieaktualnych danychNiedopuszczalny debet na koncie.
NRrachunku Saldo10203 – 200,00
Opłata 1.Kwota 800zł
Opłata 2.Kwota 400zł
Realizacja opłaty 2.-400zł
Debet na koncie
200zł
50
Blokowanie dostępu do danych
Rodzaj blokady Uprawnieniezakładającego
Uprawnienia innych
tylko do odczytu odczyt odczytdo zapisu odczyt i zapis odczytwyłączność odczyt i zapis brak dostępu
Granulacja blokady:• baza danych, • tabela, • zestaw rekordów,• rekord, • pole
51
Zakleszczenie Wzajemne zablokowanie się dwóch procesów, spowodowanezakładaniem blokad na wspólne dane.
Przykład
Proces 1 Proces 2
Tabela A
Tabela B
Założenieblokady
Założenieblokady
52
Zakleszczenie Wzajemne zablokowanie się dwóch procesów, spowodowanezakładaniem blokad na wspólne dane.
Przykład
Proces 1 Proces 2
Tabela A
Tabela BPróba założenia
blokady,oczekiwanie na
zwolnienie blokady
Próba założeniablokady,
oczekiwanie na zwolnienie blokady
53
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)
54
Transakcja
Niepodzielny ciąg operacji na danych, który może być wykonany w całości albo wcale.
PrzykładRezerwacja biletów lotniczych przy podróży z przesiadką:
Warszawa -> Paryż -> Nowy Jork
SET TRANSACTION READ WRITErezerwacja biletu Warszawa-Paryżrezerwacja biletu Paryż-Nowy Jork
COMMIT albo ROLLBACK
Transakcja
Zatwierdzenie Anulowanie
ciąg operacji
55
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)
56
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ł
krok 2: zwiększyć stan konta 400023 o kwotę 1000złAwaria
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