background image

1

Modelowanie związków encji



Identyfikacja i zdefiniowanie 
podstawowych obiektów danych



Diagramy E-R



Przetłumaczenie obiektów E-R na 
konstrukcje relacyjne



Ustalenie modelu logicznego



Normalizacja logicznego modelu 
danych

background image

2

Właściwości encji



Jest  istotna. 

Wypisujemy tylko encje ważne



Jest rodzajowa

.

Wypisujemy tylko typy rzeczy, a nie 
indywidualne elementy.



Jest fundamentalna.

Wypisujemy encje które egzystują niezależnie. 



Jest jednolita.

Upewnić się, że każda encja którą się nazywa 
reprezentuje pojedynczą klasę

background image

3

Identyfikacja encji

osoba

adres

stacjonarny

fax

komórka

•Prywatna książka adresowa:

– osoby

– adresy 

– telefony

background image

4

Wybieranie atrybutów encji



Są istotne.



Są bezpośrednie, nie pochodne.



Są atomowe



Zawierają dane tego samego typu.

background image

5

Identyfikacja atrybutów

osoba

adres

stacjonarny

fax

komórka

imię
nazwisko
data_ur
rocznice
email
dziecko1
dziecko2

ulica
miasto
województwo
nr_kodu

st_numer
st_typ

fax_num
od
do

k_num
Era
Simplus
Orange

background image

6

Definiowanie relacji



Typ relacji



Zależność egzystencjalna



Zależność egzystencjalna opisuje czy 
encja będąca w relacji jest opcjonalna 
czy obowiązkowa.



Kardynalność



Kardynalność określa ilość krotek w 
relacji.

background image

7

Ustalenie relacji

osoba

adres

numer

(stacjonarny)

numer

(fax)

numer

(komórka)

osoba

ż

aden

adres

ż

aden

numer

(stacjonarny)

ż

aden

numer

(fax)

ż

aden

numer

(komórka)

ż

aden

background image

8

Ustalenie relacji

0-1

brak

adres

osoba

osoba

Jak wiele osób może być związanych z jednym adresem? 

background image

9

Ustalenie relacji

0-n

0-1

brak

adres

osoba

osoba

Jak wiele adresów może być skojarzonych z jedną osobą?

background image

10

Ustalenie relacji

0-n

0-n

0-1

brak

adres

numer
(stacjonarny)

osoba

osoba

Jak wiele numerów stacjonarnych może być
skojarzonych z osobą?

background image

11

Ustalenie relacji

0-n

1

0-n

0-1

brak

adres

Numer
(stacjonarny)

osoba

osoba

Jak wiele osób może być skojarzonych z numerem 
stacjonarnym? 

background image

12

Ustalenie relacji

osoba

adres

numer

(stacjonarny)

numer

(fax)

numer

(komórka)

osoba

ż

aden

0-n

0-1

1

0-n

1-n

0-n

1

0-n

adres

ż

aden

ż

aden

ż

aden

ż

aden

numer

(stacjonarny)

ż

aden

ż

aden

ż

aden

numer

(fax)

ż

aden

ż

aden

numer

(komórka)

ż

aden

background image

13

Reguły definiowania tabel, 
wierszy i kolumn



Wiersze muszą być niezależne



Wiersze muszą być unikalne



Kolumny muszą być niezależne 



Wartości w kolumnach muszą być
atomowe



Każda kolumna musi mieć unikalną
nazwę



Każda kolumna musi zawierać dane 
pojedynczego typu

background image

14

Nakładanie ograniczeń na 
kolumny



Typ danych (Integer, Char, Date itp)



Format ( np. yy/mm/dd)



Zakres (np. od 1,000 do 5,400)



Znaczenie ( np. PESEL)



Dopuszczalne wartości (np. tylko S lub U)



Unikalność



Wartość Null



Wartość domyślna



Ograniczenia referencyjne

background image

15

Diagramy E-R

encja

encja

relacja

adres

osoba

background image

16

Symbole graficzne

opcjonalny

opcjonalny

dokładnie jeden

wiele

background image

17

Czytanie diagramów E-R

adres

osoba

może mieć 0 lub wiele

może mieć 0 lub dokładnie 1

background image

18

Diagram E-R 
książki telefonicznej

osoba

adres

komórka

fax

stacjonarny

nazwisko
imię
data_ur
rocznice
email
dziecko1
dziecko2
dziecko3

st_numer
st_typ

fax_num
od
do

k_num
Era
Simplus
Orange

ulica
miasto
województwo

nr_kodu

background image

19

Dodanie kluczy

osoba

adres

komórka

fax

stacjonarny

Nr_osoby PK
nazwisko
imie
data_ur
rocznice
email
dziecko1
dziecko2
dziecko3

st_numer PK
nr_osoby FK
st_typ

fax_num PK
nr_osoby FK
od
do

k_num PK
nr_osoby FK
Era
Simplus
Orange

Id_adr PK
Nr_osoby FK
ulica
miasto
województwo

nr_kodu

PK=Primary Key
FK=Foreign Key

background image

20

Anomalie



Redundancja danych (redudancy)



dane niepotrzebnie powtarzają się w 
kilku krotkach



Anomalia istnienia 



jedna encja nie może istnieć bez drugiej 
encji



Anomalia aktualizacji



wartość danej zostanie zmodyfikowana w 
jednej krotce, a w drugiej nie

background image

21

Normalizacja

Normalizacja to proces usuwania 

anomalii (dekompozycja relacji)



Pierwsza postać normalna (1NF)



Druga postać normalna (2NF)



Trzecia postać normalna (3NF)



Czwarta postać normalna (4NF)



Piąta postać normalna (5NF)

background image

22

1NF

ID Faktu Data_sp

Odbiorca

NIP

Miejscow

Adres

Towar

Ilość

Cena_j

VAT

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorowa

papier,
ołówek,
pióro,
gumka

100,2000
,100, 500

•Postać ta wymaga, aby każdy element informacji, 
zapisywany w wierszach i kolumnach był atomowy, tzn
niepodzielny (wartość była jednym z prostych typów 
danych np. liczbą całkowitą, a nie kolekcją wartości typu 
lista danych).
•Tabela w 1NF nie zawiera powtarzających się danych 
(kolumn).

background image

23

1NF

ID Faktu

Data_sp

Odbiorca

NIP

Miejscow

Adres

Towar

Ilość

Cena_j VAT

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

papier,

100

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

ołówek

2000

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

pióro

100

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

gumka

500

•Ponieważ dane o odbiorcy, numer faktury i data jej 
wystawienia powtarzają się (redundancja danych), traci się
dużo pamięci.

•W przypadku zmiany adresu Odbiorcy, należałoby dokonać
zmian we wszystkich rekordach dotyczących tego klienta. 
Zjawisko to nosi nazwę anomali aktualizacji

•Taki sposób zapisu sugerowałby, że nie istnieje klient bez 
faktury ( dwie encje mogą istnieć tylko razem). 
Jest to tzw. anomalia istnienia.

background image

24

2NF



Tabela jest w 2NF gdy jest w 1NF



Tabela jest w 2NF gdy każde z pól 
nie wchodzących w skład klucza 
zależy funkcjonalnie od całego 
klucza, a nie od jego części.



Zależność funkcjonalna wskazuje, że 
istnieją związki pomiędzy wartościami 
pochodzącymi z dwóch różnych 
kolumn.

background image

25

Zależności funkcjonalne



Mówimy że kolumna A jest funkcjonalnie 
zależna od B, jeśli dla każdej wartości w 
kolumnie B istnieje dokładnie jedna 
związana z nią wartość kolumny A.  



Jeżeli kolumna nie jest zależna funkcyjnie 
od klucza, to nie jest związana z encją.

background image

26

Druga postać normalna (2NF)



Jeżeli tabela posiada klucz główny prosty, 
to atrybut musi zależeć od klucza.



Jeżeli tabela posiada klucz główny złożony, 
to atrybut musi zależeć od wartości 
wszystkich kolumn klucza razem wziętych, 
nie od jednej czy którejś z nich.



Jeżeli atrybut zależy również od innych 
kolumn, to muszą być one kluczem 
kandydującym.

background image

27

2NF



Określenie klucza głównego tabeli 
Faktura



tworzą go ID Faktury i Towar, bo tylko 
ich kombinacja powoduje 
rozróżnialność każdego wiersza w 
tabeli.

ID Faktu

Data_sp

Odbiorca

NIP

Miejscow

Adres

Towar

Ilość

Cena_j VAT

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

papier,

100

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

ołówek 2000

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

pióro

100

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

gumka

500

background image

28

2NF

ID Faktu

Data_sp

Towar

Ilość

Cena_n

VAT

01/10/05

05-10-13 papier,

100

01/10/05

05-10-13 ołówek 2000

01/10/05

05-10-13 pióro

100

01/10/05

05-10-13 gumka

500

ID Faktury

Odbiorca

NIP

Miejscow

Adres

01/10/05

Hurtown

345-456-

Sopot

Kolorow

•Dane o odbiorcy zależą jedynie od ID Faktury (fakturę wystawia się
na danego klienta), a nie zależą od Towaru.

•Dwie encje Faktura i Odbiorca zostały mylnie połączone w jedną

ID Faktu

Data_sp

Odbiorca

NIP

Miejscow

Adres

Towar

Ilość

Cena_j VAT

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

papier,

100

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

ołówek 2000

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

pióro

100

01/10/05

05-10-13

Hurtown

345-456-

Sopot

Kolorow

gumka

500

background image

29

2NF



Data sprzedaży zależy od ID Faktury, ale 
nie zależy od Towaru ( Każdy towar można 
sprzedać dowolnego dnia). 

ID Faktu

Data_sp

Towar

Ilość

Cena_n

VAT

01/10/05

05-10-13 papier,

100

01/10/05

05-10-13 ołówek 2000

01/10/05

05-10-13 pióro

100

01/10/05

05-10-13 gumka

500

ID Faktury

Odbiorca

NIP

Miejscow

Adres

Data_sp

01/10/05

Hurtown

345-456-

Sopot

Kolorow

05-10-13

background image

30

2NF

ID Faktury

Odbiorca

NIP

Miejscow

Adres

Data_sp

01/10/05

Hurtown

345-456-

Sopot

Kolorow

05-10-13

ID Faktu

Towar

Ilość

Cena_n

VAT

01/10/05

papier,

100

01/10/05

ołówek 2000

01/10/05

pióro

100

01/10/05

gumka

500

background image

31

2NF



Ilość zależy od Towaru, ale zależy również
od 
ID Faktury (na konkretnej fakturze jest 
konkretna ilość), dlatego pozostaje w 
tabeli.

ID Faktu

Towar

Ilość

Cena_n

VAT

01/10/05

papier,

100

01/10/05

ołówek 2000

01/10/05

pióro

100

01/10/05

gumka

500

background image

32

2NF



Cena i VAT są związane z towarem, nie 
zależą od numeru faktury. 

ID Faktury

Odbiorca

NIP

Miejscow

Adres

Data_sp

01/10/05

Hurtown

345-456-

Sopot

Kolorow

05-10-13

ID Faktu

Towar

Ilość

01/10/05

papier,

100

01/10/05

ołówek 2000

01/10/05

pióro

100

01/10/05

gumka

500

ID_Towaru

Towar

Cena_n

VAT

papier

100

22

background image

33

3NF



Tabela jest w 3NF jeżeli jest w 2NF.



Wszystkie atrybuty nie zależą tranzytywnie 
od klucza głównego.



Zależność tranzytywna oznacza, że atrybut 
opisujący klucz zależy nie tylko od klucza 
głównego jako całości, ale również od innego 
atrybutu opisującego klucz.



Aby przekształcić tabelę do 3NF należy 
usunąć z tabeli atrybuty, które są zależne 
od innych atrybutów opisujących klucz.

background image

34

3NF

NIP, Miejscow., Adres są polami, które zależą od kolumny 
Odbiorca

•Kolumna Odbiorca nie jest polem kluczowym. 

ID Faktury

Odbiorca

NIP

Miejscow

Adres

Data_sp

01/10/05

Hurtown

345-456-

Sopot

Kolorow

05-10-13

Odbiorca

NIP

Miejscow

Adres

Hurtown

345-456-

Sopot

Kolorow

ID Faktury

NIP

Data_sp

01/10/05

345-456-

05-10-13

background image

35

Towar

Id_towaru

Cena

Vat

Id_faktury

Id_towaru

ilość

Id_faktury

Data_sp

NIP

NIP

Miejscow

Odbiorca

Adres

1

1

1

n

n

n

background image

36

ID_Faktury

Data_sp

Odbiorca

NIP

Miejscow

Adres

ID_Towar

Nazwa_towaru

Ilość

Cena_n

Vat

ID_Faktury

ID_Towar

Ilość

ID_Towaru

Nazwa_towaru

Cena_n

Vat

ID_Faktury

Data_sp

NIP

NIP

Odbiorca

Miejscow

Adres

ID_Faktury

Data_sp

Odbiorca

NIP

Miejscow

Adres

background image

37

Normalizacja modelu danych



Uzyskanie większej elastyczność projektu



Zapewnienie, że atrybuty będą
umieszczone w odpowiednich tabelach



Redukcja redundancji danych



Poprawienie efektywności programowania



Niższe koszty zarządzania aplikacją



Maksymalizacja stabilności struktury 
danych

background image

38

Diagram przed normalizacją

osoba

adres

komórka

fax

stacjonarny

Nr_osoby PK
nazwisko
imie
data_ur
rocznice
email
dziecko1
dziecko2
dziecko3

st_numer PK
nr_osoby FK
st_typ

fax_num PK
nr_osoby FK
od
do

k_num PK
nr_osoby FK
Era
Simplus
Orange

Id_adr PK
Nr_osoby FK
ulica
miasto
województwo

nr_kodu

PK=Primary Key
FK=Foreign Key

background image

39

Normalizacja tabeli Osoba

Nr_osoby

Nazwisko

Imię

Data_ur

Rocznice

e-mail Dziecko1

Dziecko2

Dziecko3

Powtarzające się kolumny

Nr_osoby

Nazwisko

Imię

Data_ur

Rocznice

e-mail

Nr_osoby

Dziecko

background image

40

Diagram po normalizacji

osoba

adres

komórka

fax

stacjonarny

Nr_osoby PK
nazwisko
imie
data_ur
rocznice
email

st_numer PK
nr_osoby FK
st_typ

fax_num PK
od
do

k_num PK
nr_osoby FK
operator

Id_adr PK
Nr_osoby FK

ulica

miasto

województwo
nr_kodu

PK=PrimaryKey
FK=Foreign Key

Fax_num PK FK
Nr_osoby PK FK

Nr_osoby  FK
dziecko

dziecko

Nazwa_fax

background image

41

Modelowanie danych metodą
E-R, podsumowanie



Identyfikacja i zdefiniowanie podstawowych obiektów

:



Encje



Relacje



Atrybuty



Przedstawienie graficzne obiektów przy użyciu diagramów 
E-R.



Przetłumaczenie diagramów E-R na konstrukcje relacyjne:



Ustalenie dla każdej encji klucza głównego i obcego.



Ustalenie typu relacji



1:1



m:n



inny specjalny typ



Normalizacja modelu danych:



Pierwsza postać normalna



Druga postać normalna



Trzecia postać normalna.

background image

42

Implementacja modelu danych



Zdefiniowanie domeny



Typy danych



Wartości domyślne



Ograniczenia (constraints)



Utworzenie bazy danych



Instrukcja CREATE DATE BASE



Instrukcja CREATE TABLE



Fragmentowanie tabel i indeksów



Dostęp do danych w tabelach 
pofragmentowanych

background image

43

Reguły Codda

1. Baza danych gromadzi wszystkie dane wewnątrz 

krotek

2. Każda wartość może być dostępna przez kombinację

nazwy relacji, nazwy atrybutu i wartości klucza 
podstawowego krotki

3. Wartości NULL wprowadzane są systematycznie
4. Katalog bazy danych jest przechowywany wewnątrz 

jednej lub wielu relacji, które mogą być czytane przez 
autoryzowanych użytkowników

5. System musi być zdolny do uaktualniania przez 

perspektywę

background image

44

Reguły Codda

6. System wdraża język zapytań, dzięki któremu 

użytkownik może wykonywać następujące zadania:

definiowanie relacji

definiowanie perspektyw (ang. views)

manipulowanie danymi

ustawianie ograniczeń, aby narzucić integralność
danych

przyznawanie i cofanie pozwoleń na przeglądanie lub 
manipulowanie relacjami

wiązanie manipulacji elementami bazy danych jako 
transakcji

background image

45

Reguły Codda

7. System musi być zdolny do wstawiania, aktualizowania 

i usuwania grup krotek, nie tylko jednej krotki naraz

8. Programy, za pomocą których manipuluje się bazą

danych, są niezależne od tego, jak baza danych jest 
fizycznie zorganizowana

9. Programy, za pomocą których baza danych jest 

przetwarzana, są niezależne od tego, jak baza danych 
jest logicznie zorganizowana wewnętrznie

background image

46

Reguły Codda

10. Zasady, które artykułują semantyczny stopień

integralności, powinny być możliwe do opisania 
wewnątrz języka zapytań systemu zarządzania bazą
danych. Możliwe powinno być również
zmagazynowanie ich wewnątrz katalogu systemu bazy 
danych i narzucanie przez sam system zarządzania 
bazą danych

11. Relacyjna baza danych powinna działać tak samo, 

niezależnie od tego, czy pracuje na pojedynczej 
maszynie, czy jest rozpowszechniana przez sieć

12. Nie można użyć języka niższego rzędu do obalenia 

jedności zasad bazy danych