Pracownik

Transkrypt

Pracownik
Projektowanie baz danych
Uwagi ogólne
• Projektowanie baz danych jest częścią
tworzenia systemu z bazą danych.
• Podlega ogólnym zasadom tworzenia
projektu.
Przed rozpoczęciem
projektowania
• Modelowanie biznesowe – co się dzieje
w rzeczywistości, którą implementujemy?
Po co? Dla kogo?
• Wymagania użytkownika – jaką
funkcjonalność chcemy
zaimplementować?
Etapy projektowania bazy danych
• konceptualne (bez odniesienia do SZBD) –
zapisanie informacji o projekcie w standardowej
notacji ER (diagramy Chena lub UML)
niezależnej od docelowego SZBD.
• logiczne (dla SZBD konkretnego typu, np.
relacyjnego lub obiektowego) – podział danych
na struktury dostępne w SZBD.
• fizyczne (dla konkretnego SZBD) –
zdefiniowanie dziedzin, relacji, indeksów,
perspektyw, użytkowników z uprawnieniami itp.
Modelowanie konceptualne
Ogólne problemy
• Jak modelować dane niezależnie od
implementacji?
• Jak osiągnąć dobry schemat bazy
danych?
Co powinniśmy osiągnąć?
• Porozumienie dotyczące schematu bazy danych przed
podjęciem decyzji o implementacji.
• Powinniśmy wiedzieć:
– Jakie jednostki(encje) modelować
– Jak jednostki (encje) są powiązane nawzajem
– Jakie są ograniczenia w modelowanej dziedzinie.
• Powinniśmy osiągnąć dobry projekt
• Efektem modelowania jest nieformalne przedstawienie
bazy danych w postaci diagramów
Model Chena
Model Chena
• Jednostka (ang. Entity) obiekt, encja;
• Atrybuty (ang. Attributes)
• Związki (ang. Relationship)
Diagramy Chena – zbiór encji
Encja - zbiór jednorodnych elementów, o
skończonej, regularnej strukturze, które
można wyróżnić w zagadnieniu
rzeczywistym.
Pracownik
Firma
Stanowisko
Oddział
Diagramy Chena – atrybuty
• Atrybut - cecha encji. Encja ma ustaloną liczbę
atrybutów. Dla każdego atrybutu określamy typ
jego wartości oraz ewentualne ograniczenia
nałożone na te wartości (zakres, format itp.)
Imię
Regon
Nazw
Pracownik
DataUr
Firma
Nazwa
Kapitał
Diagramy Chena
Osoba
Pesel
Tytuł
Nazwa
Imię
Płeć
Drugie
Imię
Encje mogą być proste lub złożone
Nazwisko
DataUr
Diagramy Chena - klucze
• Klucz – minimalny podzbiór atrybutów encji
pozwalający jednoznacznie wyznaczyć encję;
• Rodzaje kluczy:
– Klucz kandydujący – dowolny klucz zbioru encji;
– Klucz główny – wybrany jeden klucz spośród
kandydujących;
– Klucze alternatywne – klucze kandydujące oprócz
głównego;
• Podział kluczy:
– Klucz złożony: {Nazwisko, Imie, DataUr}
– Klucz prosty: {PESEL}, {NIP},
– Klucz sztuczny: {OsID}
Diagramy Chena - klucze
• Każdy typ jednostki musi posiadać klucz.
Klucz oznaczany jest przez podkreślenie.
Regon
Firma
Nazwa
Kapitał
Diagramy Chena – związki
Związek określamy pomiędzy zbiorami encji.
• Funkcyjny (1-n)
1
n
Firma
Oddział
ma
• Wieloznaczny (n-m)
Pracownik
n
ud
m
Firma
• Jednoznaczny (1-1)
Kraj
1
1
ma
Stolica
Diagramy Chena – atrybuty związku
• Związek może mieć atrybuty
Samochód
n
1
ma
dataZak
n
Firma
Osoba
cena
m
Ud
dataZat
Osoba
płaca
Diagramy Chena – związki k-arne
• Możliwe są związki pomiędzy >2 zbiorami
encji.
Grupa
Przedmiot
ma
Sala
termin
Wykładowca
Diagramy Chena – związki
rekurencyjne
• Związek pomiędzy encjami tego samego
zbioru. Definiując taki związek określamy
rolę każdej z encji w związku.
jest podwładnym
podległość
OSOBA
jest przełożonym
Diagramy Chena – związki
hierarchiczne
PRACOWNIK
isa
ZESPÓŁ
kieruje
Data
MANAGER
Premia
Większy przykład
OSOBA
isa
isa
poprzedza
1..*
STUDENT
PRACOWNIK
0..1
następstwo
KURS
1
*
isa
następuje_po
zapisany
zawiera
PROFESOR
1
1..*
1..*
WYKŁAD
*
prowadzi
Podsumowanie procesu tworzenia
modelu konceptualnego
1.
2.
3.
4.
5.
6.
określ zbiory encji;
określ związki pomiędzy zbiorami encji i ich rodzaj;
określ atrybuty encji i związków (uwaga na atrybuty
redundantne);
wyznacz dziedziny atrybutów i ich ograniczenia;
wyznacz klucze kandydujące i wybierz klucze
główne;
określ więzy ogólne;
Diagramy klas
Klasa- części składowe
Nazwa klasy
Atrybuty klasy
Metody klasy
Klasa - przykład
Trzy rodzaje pól: nazwa klasy, atrybuty klasy oraz metody klasy.
Możliwe są różne poziomy szczegółowości.
Pracownik
Nazwisko
DataUr
PESEL
Pracownik
Firma
Nazwa
Regon
Adres
Firma
Dziedziczenie klas
Asystent
Osoba
Osoba
Pracownik
Pracownik
Adiunkt
Docent
Profesor
Asystent
Adiunkt
Docent
generalizacja
specjalizacja
Dziedziczenie pozwala na tworzenie drzewa klas.
Profesor
Asocjacje
Asocjacja może mieć nazwę (pracuje_dla), która wyznacza znaczenie tej asocjacji w
modelu pojęciowym opisującym dziedzinę przedmiotową.
Firma
1
pracuje_dla
1..*
Osoba
Asocjacje mogą być wyposażone w oznaczenia liczności. Liczność oznacza, ile
obiektów innej klasy może być powiązane z jednym obiektem danej klasy.
Atrybuty asocjacji – klasy asocjacyjne
Plik
*
Prawo dostępu
dostęp
dostępny
dla
{ dostęp oznacza:
*
Użytkownik
czytanie lub
czytanie-pisanie}
Osoba
nazwisko
szef
pesel
kieruje 0..1 adres
*
pracownik
Ocena wydajności
ocena
zatrudnia
1..*
0..1
Zatrudnienie
zarobek
stanowisko
Firma
nazwa
adres
Kiedy stosować atrybuty asocjacji?
Zalecane jest, by przypisywać do klasy
tylko te atrybuty, które są dla tej klasy
stabilne.
Osoba
nazwisko
pesel
adres
Osoba
Forma
nie
zalecana,
mniej
elastyczna:
np.
po
zmianie
powiązania na wiele-do-wielu trzeba
zmieniać położenie atrybutów.
nazwisko
pesel
adres
zarobek
stanowisko
pracuje_w
1..*
0..1
Firma
nazwa
adres
Zatrudnienie
zarobek
stanowisko
pracuje_w
1..*
Firma
0..1
nazwa
adres
Przykładowy diagram klas
Osoba
poprzedza
zapisany_na
Student
1..*
Pracownik
0..1
Kurs
*
1
zawiera
Profesor
prowadzi
następuje_po
1..* 1..*
Wykład
*
1
Budowa modelu obiektowego
• Poszczególne kroki podczas tworzenia
modelu konceptualnego
– Identyfikacja klas użytkownika
– Identyfikacja związków
– Identyfikacja atrybutów
– Identyfikacja relacji dziedziczenia
Transformacja modelu
konceptualnego do modelu
relacyjnego
Przejście na model relacyjny
Transformacja modelu logicznego do fizycznego polegać będzie na przeniesieniu klas oraz
związków do odpowiednich tabel bazodanowych
Podstawowe problemy przy przechodzeniu na model relacyjny:
 nie ma możliwości przechowywania wielu wartości jednego atrybutu,
 każda tabela musi byc wyposażona w unikalny klucz,
 powiązania muszą być zaimplementowane jako tabele/relacje z kluczami obcymi,
 nie można zagnieżdżać danych,
 występują ograniczenia na rozmiar krotek, wartości elementarne i typy danych,
 brak dziedziczenia i wielodziedziczenia,
Dodatkowo należy uwzględnić:
 cechy ilościowe (charakterystyka ilościowa danych i procesów) ,
 unikanie redundancji w danych (normalizacja),
 wymagania użytkowe: czas odpowiedzi, utylizacja pamięci (denormalizacja).
Przejście na model relacyjny nie może być całkowicie automatyczne.
Podstawowe informacje
• Zasadniczo można rozważać konwertowanie klas do
tabel bazy danych – nie zawsze jednak jest to możliwe.
Przeszkody: np. brak obsługi dziedziczenia.
• Atrybuty klasy są konwertowane na kolumny tabeli –
przypadek najprostszy
• Nie wszystkie atrybuty są trwałe – niektóre są używane
do obliczeń tymczasowych. Wtedy nie są mapowane.
• Jeśli atrybuty obiektu są obiektami, wówczas tworzona
jest asocjacja pomiędzy nimi: np.: klient posiada adres,
który jest bytem złożonym
• Tabela może zawierać atrybuty, które nie są
wyszczególnione w klasie
Odwzorowanie metod/operacji
Model relacyjny nie przewiduje specjalnych środków.
Najczęściej są one odwzorowane na poziomie programów aplikacyjnych jako procedury
napisane w proceduralnych lub obiektowych językach programowania i dedykowane do
obsługi pewnej tabeli/tabel w relacyjnej bazie danych.
Niekiedy w systemach relacyjnych mogą być odwzorowane w postaci procedur baz
danych (w SQL) lub w postaci aktywnych reguł.
Odwzorowanie polimorfizmu, przesłaniania, dynamicznego wiązania i hermetyzacji jest
w zasadzie niemożliwe. Programista może napisać procedurę, która w środku ma
przełączenie jawne na różne przypadki specjalizacji klas.
Rodzaje relacji
• Rodzaje relacji
– 1:1 - jeden do jednego
– 1:N – jeden do wielu
– M:N – wiele do wielu
Odwzorowanie asocjacji
Dla liczności 1:1 można zaimplementować jako jedną tablelę.
Państwo
Nazwa
Stolica
Miasto
Państwo
IdPaństwa
Nazwa
Stolica
Dla liczności 1:n można zaimplementować jako dwie tabele: (Atrybuty związku na
ogół powodują konieczność zastosowania następnej metody.)
pracuje_w
Pracownik
Nazwisko 1..*
1
Firma
Nazwa
Pracownik
IdPrac
Nazwisko
IdFirmy
Firma
IdFirmy
Nazwa
Dla liczności m:n należy zaimplementować jako trzy tabele.
Pracownik pracuje_w
Nazwisko
1..*
*
Firma
Nazwa
Pracownik
IdPrac
Nazwisko
PracFirma
IdPrac
IdFirmy
Firma
IdFirmy
Nazwa
Trzy metody obejścia braku dziedziczenia
Użycie jednej tabeli dla całego
drzewa klas poprzez zsumowanie
wszystkich
występujących
atrybutów i powiązań w tym
drzewie oraz dodanie dodatkowego
atrybutu - dyskryminatora wariantu.
A
A B C dyskr
B
C
A
Użycie oddzielnych tabel dla
każdej klasy konkretnej.
Usunięcie klas abstrakcyjnych i
przesunięcie ich
atrybutów/powiązań do klas
konkretnych.
AB
B
C
A
Użycie tabel dla każdej klasy.
Zamiana dziedziczenia na
powiązania łączące nadklasę ze
wszystkimi podklasami.
AC
A
0..1
B
C
B
0..1
C
Przykład obejścia braku dziedziczenia
PIT
Kwota do zwrotu
Należny podatek
Podstawa opodatkowania
Rok
PIT pojedyncz podatnika
Adres
dodatkowy
atrybut
dyskryminator
PIT małżeństwa
Adres męża
Adres żony
PIT
Kwota do zwrotu
Należny podatek
Podstawa opodatkowania
Rok
Adres
Adres męża
Adres żony
Rodzaj PIT
PIT pojedyncz podatnika
Adres
Kwota do zwrotu
Należny podatek
Podstawa opodatkowania
Rok
PIT małżeństwa
Adres męża
Adres żony
Kwota do zwrotu
Należny podatek
Podstawa opodatkowania
Rok
PIT
Kwota do zwrotu
Należny podatek
Podstawa opodatkowania
Rok
PIT pojedyncz podatnika
Adres
PIT małżeństwa
Adres męża
Adres żony
Zalety i wady każdej z trzech metod
Cecha
Jedna tabela
Tabela dla klasy Tabela dla
dla hierarchii konkretnej
każdej klasy
Łatwość implementacji
Prosta
Średnia
Trudna
Łatwość dostępu do danych
Prosta
Prosta
Średnia
Łatwość przypisania OID
Prosta
Średnia
Średnia
Związanie informacji
Bardzo duże
Duże
Małe
Szybkość dostępu
Bardzo szybki
Szybki
Wolny
Wspomaganie dla polimorfizmu Słabe
Średnie
Duże
Konsumpcja pamięci
Mała
Mała
Duża
Przejście na model relacyjny; przykłady (1)
Klient
NazwaKlienta
ma
InfoDostawy
AdresDostawy
KlientDostawa (IdKlienta, NazwaKlienta, AdresDostawy)
Klient
NazwaKlienta
posiada
KartaKredytowa
IdKarty
0..1
TypKarty
LimitKarty
Klient (Id_Klienta, Nazwa_Klienta)
KartaKredytowa (IdKarty, TypKarty, IdKlienta, LimitKarty)
Projektant nie zdecydował się na jedną
tabelę, gdyż założył, że będzie zbyt dużo
wartości zerowych.
Przejście na model relacyjny; przykłady (2)
0..1 Mężczyzna
0..1
Kobieta
NazwiskoKobiety
NazwiskoMężczyzny
Ślub
DataŚlubu
Kobieta( IdKobiety, NazwiskoKobiety )
Mężczyzna( IdMężczyzny, NazwiskoMężczyzny )
Ślub( IdKobiety, IdMężczyzny, DataŚlubu )
1..*
Student
Nazwisko_Studenta
Suma_Pkt_Studenta
Student_Kurs
Ocena_semestr
Semestr
* Kurs
Nazwa_Kursu
Student (Id_Studenta, Nazwisko_Studenta, Suma_Pkt_Studenta)
Kurs (Id_Kursu, Nazwa_Kursu)
Student_Kurs (Id_Studenta, Id_Kursu, Semestr, Ocena_semestr)
Przejście na model relacyjny; przykłady (3)
Miasto
1..*
NazwaMiasta
LiczbaMieszkM
leży_w
Województwo
NazwaWojewództwa
Wojewoda
LiczbaMieszkW
Miasto(NazwaMiasta, NazwaWojewództwa, LiczbaMieszkM)
Województwo(NazwaWojewództwa, Wojewoda, LiczbaMieszkW)
Sprzedaż
IdSprzedaży *
Data
Sprzedawca
Nazwisko
NrTel
Sprzedaż_Sprzedawca
NazwaTowaru
Ilość
Sprzedawca(Nazwisko, NrTel)
Sprzedaż(IdSprzedaży, Data)
Sprzedaż_Sprzedawca (IdSprzedaży, Nazwisko,NazwaTowaru, Ilość)
Przejście na model relacyjny; przykłady (4)
Pracownik
jest_przełożonym
NazwiskoPrac
DataUrodzPrac
jest_podwładnym
podległość
M:N
Pracownik (IdPracownika, NazwiskoPrac, DataUrodzPrac)
Podległość (IdPracPrzełoż, IdPracPodwład)
1:N
Pracownik (IdPracownika, NazwiskoPrac, DataUrodzPrac, IdPracPodwład)
1:1
Pracownik(IdPracownika, NazwiskoPrac, DataUrodzPrac, IdPracPrzełoż)
Przejście na model relacyjny; przykłady (5)
Towar
Nazwa_Towaru
Sprzedawca
Nazwa_Sprzedawcy
Klient
Nazwa_Klienta
Sprzedaż
Ilość_Towaru
Data_Sprzedaży
Klient (Id_Klienta, Nazwa_Klienta)
Towar (Id_Towaru, Nazwa_Towaru)
Sprzedawca (Id_Sprzedwcy, Nazwa_Sprzedawcy)
Sprzedaż (Id_Klienta, Id_Sprzedawcy, Id_Towaru, Data_Sprzedaży, Ilość_Towaru)
Normalizacja czy denormallizacja
• Normalizacja polega na zdekomponowaniu tabeli na
dwie lub więcej celem uniknięcia niekorzystnych
własności: redundancji w danych oraz związanych z
redundancją anomalii aktualizacyjnych.
• Istnieje 5 postaci normalnych relacji
• Metodyki oparte na modelu encja-związek i metodyki
obiektowe w naturalny sposób prowadzą do
znormalizowanych schematów.
• Podejście top-down oraz tendencja do
dekompozycji/separowania pojęć również w naturalny
sposób prowadzą do znormalizowanych schematów.
• Czynniki inne niż zależności funkcyjne mogą okazać się
bardziej istotne (wydajność --> denormalizacja).
Należy zapamiętać…
• Klasa jest odwzorowana na tabelę
• Atrybut klasy jest odwzorowany na kolumnę tabeli
• Implementacja relacji 1:1 polega na połączeniu atrybutów w jedną
tabelę
• Implementacja relacji 1:N polega na dodaniu klucza obcego do
tabeli po stronie „wiele”
• Implementacja relacji N:M polega na stworzeniu tabeli asocjacyjnej,
która zawiera kombinację kluczy głównych
• Dziedziczenie można obejść przez agregację, stworzenie jednej
wspólnej tabeli lub jednej tabeli dla każdej klasy
• Osiągnięcie rozsądnego kompromisu między normalizacją a
denormalizacją
• Przy projektowaniu należy brać pod uwagę rozmiar tabel oraz
przyrost danych w przyszłości
Dziękuję

Podobne dokumenty