56
Bazy danych Zasady konstrukcji baz danych

Bazy danych - SKiBD - Laboratoriummts.wibro.agh.edu.pl/dydaktyka/skibd/docs/wykl/SKiBD_7_BazyDanych.pdf · Diagram hierarchii funkcji Sprzedaż wysyłkowa towarów Zarządzanie finansami

Embed Size (px)

Citation preview

Bazy danych

Zasady konstrukcji baz danych

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

Wielostanowiskowe bazy danych

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