encji W modelu związków

advertisement
PODSTAWY
BAZ DANYCH
5. Modelowanie danych
2009/2010 - Notatki do wykładu "Podstawy baz danych"
1
Etapy tworzenia systemu informatycznego
Etapy tworzenia systemu informatycznego - (według CASE*Method)
(CASE – Computer Aided Systems Engineering )
Analiza wymagań
Transformacja modeli pojęciowych
do implementacyjnych
Implementowanie
bazy danych i aplikacji
Analiza
Modele konceptualne opisujące
wymagania odnośnie:
- danych,
- funkcjonalności aplikacji.
Np. ER
Projektowanie
Implementacja
Modele implementacyjne
bazy danych i aplikacji
np. relacyjny, obiektowy.
Dokumentacja
Wdrażanie
Utrzymanie
2009/2010 - Notatki do wykładu "Podstawy baz danych"
2
Model związków - encji
W modelu związków - encji (entity-relationship model - ER)
występują:
• obiekty świata rzeczywistego reprezentowane są za pomocą
encji (entities);
• powiązania między obiektami świata rzeczywistego
reprezentowane są za pomocą związków (relationships)
pomiędzy encjami.
Będziemy używali notacja modelu ER według Barker (Oracle).
Model związków - encji zawiera:
– encje,
– atrybuty encji,
– związki pomiędzy encjami,
– hierarchia generalizacji.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
3
Modelowanie encji
Encja
• Reprezentuje zbiór obiektów opisany tymi samymi cechami
(atrybutami, własnościami).
• Informacje o tych obiektach będą przechowywane w bazie
danych.
• Konkretny obiekt świata rzeczywistego jest reprezentowany
jako wystąpienie encji.
Przy modelowaniu encji należy przestrzegać następujących zasad:
• Każda encja posiada unikalną nazwę.
• Każda encja posiada zbiór atrybutów.
• Encje mogą wchodzić w związki z innymi encjami.
• Dowolna rzecz lub obiekt może być reprezentowany tylko
przez jedną encję.
Nazwa encji powinna być rzeczownikiem w liczbie pojedynczej.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
4
Modelowanie encji
Encje
Wystąpienie encji
Student
Nazwisko
Imię
Data_urodzenia
Płeć
Adres
Telefon
Student
Kowalski
Jan
1990/04/12
M
…
Wydział
Nazwa_wydziału
Adres
Telefon
Wydział
Księgowość
Warszawa …
601987665
Atrybutami encji mogą być:
• Atrybuty identyfikujące jednoznacznie encję.
• Związki z innymi encjami.
• Inne własności encji.
• Atrybuty z wartościami wymagalnymi.
• Atrybuty z wartościami opcjonalnymi (nie wymagalne).
2009/2010 - Notatki do wykładu "Podstawy baz danych"
5
Modelowanie encji
Definicja atrybutu encji powinna zawierać:
• Nazwę.
• Dziedzinę.
• Typ danych i maksymalny rozmiar.
• Zakres dopuszczalnych wartości.
• Opcjonalność.
Przykład.
Student
# Pesel
* Nazwisko
* Imię
* Data_urodzenia
* Płeć
* Adres
o Telefon
2009/2010 - Notatki do wykładu "Podstawy baz danych"
Identyfikator encji
Atrybuty z wartościami
wymagalnymi
Atrybut z wartością
opcjonalną
6
Modelowanie związków (asocjacji)
Kolejnym obiektem modelu ER jest związek, zwany również
asocjacją, który reprezentuje powiązania pomiędzy obiektami
świata rzeczywistego np.
- Student może posiadać stypendium
- Pracownik musi posiadać pensję
Związek z każdego końca posiada krótki opis ułatwiający
interpretację związku.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
7
Modelowanie związków (asocjacji) – Cechy związku
Cechy związku
• Stopień związku
– unarny (binarny rekursywny - łączy encję samą z sobą),
– binarny (łączy dwie encje),
– ternarny (łączy trzy encje),
– n-arny (łączy n encji).
• Typ asocjacji (kardynalność)
– jeden-do-jeden (1:1),
– jeden-do-wiele (1:M),
– wiele-do-wiele (M:N).
• Istnienie (klasa przynależności)
– opcjonalny
– obowiązkowy
2009/2010 - Notatki do wykładu "Podstawy baz danych"
8
Modelowanie związków (asocjacji) – Cechy związku
Typ asocjacji, zwany kardynalnością związku, określa ile
wystąpień jednej encji może być powiązanych z iloma
wystąpieniami innej encji.
Wyróżnia się związki 1:1, 1:M, M:N.
Istnienie, zwane również klasą przynależności związku określa,
czy związek jest opcjonalny, czy obowiązkowy.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
9
Modelowanie związków (asocjacji)
Przykład. Osoba może posiadać wiele kont. Jedno konto musi
należeć tylko do jednej osoby.
Np.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
10
Modelowanie związków (asocjacji) – Związek binarny 1-1
Przykład. Związek binarny 1:1. Pracownik może kierować tylko
jednym wydziałem i wydział musi mieć tylko jednego kierownika.
Nie każdy pracownik musi być kierownikiem. Wydział musi mieć
kierownika.
Np.
Przykład. Związek binarny 1:1. Osoba musi posiadać inne_dane.
Inne_dane muszą dotyczyć tylko jednej osoby.
Osoba
muszą dotyczyć
musi posiadać
Inne_dane
Związek trudny (w zasadzie niemożliwy) w realizacji.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
11
Modelowanie związków (asocjacji) – Związek binarny
Przykład. Związek binarny 1:1. Osoba może posiadać tylko jeden
samochód. Samochód może należeć tylko do jednej osoby.
może należeć do
Osoba
Samochód
może posiadać
Przykład.
Np. Związek binarny 1:M. Pracownik może otrzymać wiele
wypłat. Wypłata musi dotyczyć tylko jednego pracownika.
2008/2009
- Notatki
do wykładu
"Podstawy
2009/2010 - Notatki
do wykładu
"Podstawy
baz danych"
baz danych"
12
12
Modelowanie związków (asocjacji) – Związek binarny M-N
Przykład. Związek binarny M:N. Student może zapisać się na
wiele przedmiotów. Na przedmiot może
zapisać się wielu
studentów. Może być student, który nie zapisał się na żaden
przedmiot i przedmiot, na który nie zapisał się żaden student.
Takie powiązanie jest poprawne ale nie jest obsługiwane.
Np.
Można ten problem rozwiązać tworząc model:
2009/2010 - Notatki do wykładu "Podstawy baz danych"
13
Modelowanie związków (asocjacji) – Związki unarne
Przykład. Związki unarne. Pracownik może być przełożonym
wielu pracowników. Nie każdy pracownik musi mieć
przełożonego.
Np. związki są niepoprawne.
Poniższe
Każdy pracownik musi być
przełożonym.
Każdy pracownik musi być
podwładnym.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
Każdy pracownik musi
być przełożonym i
jednocześnie
podwładnym.
14
Modelowanie związków (asocjacji) – Związki wyłączne
Związki wyłączne (exclusive relationships) - konkretne
wystąpienie encji może w danym momencie wchodzić tylko w
jeden ze związków.
Przykład. Związek wyłączny. Faktura musi być wystawiona dla
osoby lub dla firmy. Faktura nie może być wystawiona
jednocześnie na firmę i osobę.
Np.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
15
Modelowanie związków (asocjacji) – Związek n-arny
Przykład. Związek n-arny. Student może otrzymać ocenę z
przedmiotu od wykładowcy.
Np.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
16
Modelowanie związków (asocjacji) - Hierarchia generalizacji
Przykład. Hierarchia generalizacji. Klient może otrzymać wiele
faktur. Faktura musi być wystawiona tylko dla jednego klienta.
Klientem może być osoba_fizyczna lub osoba_prawna.
Np.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
17
Modelowanie związków (asocjacji) - Hierarchia generalizacji
Przykład. Hierarchia generalizacji.
Osoba może być studentem lub pracownikiem.
Student może posiadać oceny.
Osoba może posiadać adres.
Np.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
18
Modelowanie związków (asocjacji) – Słabe encje
W modelu ER występuje pojęcie słabej encji (weak entity).
• Jest to encja nie posiadająca własnego identyfikatora.
• Wystąpienie tej encji może wystąpić tylko w połączeniu z
encjami z nią związanymi.
Kreseczka przy wielu oznacza, że związek wchodzi w identyfikator encji
Oceny.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
19
Modelowanie związków (asocjacji)
2009/2010 - Notatki do wykładu "Podstawy baz danych"
20
Modelowanie związków (asocjacji) i atrybutów encji
2009/2010 - Notatki do wykładu "Podstawy baz danych"
21
PODSTAWY
BAZ DANYCH
6. Transformacja modelu ER do
modelu relacyjnego
2009/2010 - Notatki do wykładu "Podstawy baz danych"
22
Transformacja modelu ER
Przykład. Transformacja modelu ER do tabel w bazie danych
Oracle.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
23
Transformacja prostych encji
Przykład. Transformacja prostych encji Osoba, Wydzial,
Stanowisko do tabel w bazie danych Oracle.
CREATE TABLE Osoby
( id_os NUMBER(4) PRIMARY KEY,
nazwisko VARCHAR2(15) NOT NULL,
imie1 VARCHAR2(15) NOT NULL,
imie2 VARCHAR2(15),
d_ur DATE NOT NULL,
plec CHAR(1) NOT NULL CHECK (plec IN ('M','K'))
);
CREATE TABLE Wydzialy
( id_w NUMBER(4) PRIMARY KEY,
nazwa VARCHAR2(15) NOT NULL UNIQUE
);
CREATE TABLE stanowiska
( id_s NUMBER(2) PRIMARY KEY,
stanowisko VARCHAR2(10) NOT NULL UNIQUE
);
2009/2010 - Notatki do wykładu "Podstawy baz danych"
24
Transformacja związków
Transformacja związków:
• Związek binarny 1:1 transformuje się do klucza obcego we
wskazanej tabeli.
• Związek unarny 1:1 transformuje się do klucza obcego w tej
samej tabeli.
• Związek binarny 1:M transformuje się do klucza obcego w
tabeli po stronie "wiele".
• Związek binarny M:N transformuje się do dodatkowej
tabeli.
• Związek unarny M:N transformuje się do dodatkowej
tabeli.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
25
Transformacja encji ze związkami
Przykład. Transformacja encji Zatrudnienia ze związkami typu
1:M z encjami Osoba, Wydzial i Stanowisko do tabel w bazie
danych Oracle. Związki są wymagalne po stronie encji
Zatrudnienie i nie wymagalne po stronie encji Osoba, Wydzial i
Stanowisko.
CREATE TABLE Zatrudnienia
( id_z NUMBER(4) PRIMARY KEY,
id_os NUMBER(4) NOT NULL,
Transformacja wymagalności związków po
id_w NUMBER(4) NOT NULL,
stronie encji Zatrudnienie.
id_s NUMBER(2) NOT NULL,
od DATE NOT NULL,
do DATE,
pensja NUMBER(8) NOT NULL,
FOREIGN KEY (id_w) REFERENCES Wydzialy (id_w), Transformacja
FOREIGN KEY (id_os) REFERENCES Osoby (id_os),
związków
FOREIGN KEY (id_s) REFERENCES stanowiska (id_s)
);
2009/2010 - Notatki do wykładu "Podstawy baz danych"
26
Transformacja encji ze związkami
Przykład. Transformacja encji Kierownik ze związkami typu 1:M
z encjami Osoba, Wydzial do tabel w bazie danych Oracle.
Związki są wymagalne po stronie encji Kierownik i nie
wymagalne po stronie encji Osoba, Wydzial.
CREATE TABLE Kierownicy
Transformacja wymagalności
( id_w NUMBER(4) NOT NULL,
związków po stronie encji Kierownik
id_os NUMBER(4) NOT NULL,
od DATE NOT NULL,
do DATE,
FOREIGN KEY (id_w) REFERENCES Wydzialy (id_w), Transformacj
a związków
FOREIGN KEY (id_os) REFERENCES Osoby (id_os)
);
Uwaga. Związek transformuje się do atrybutów z warunkiem
FOREGIN KEY.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
27
Transformacja encji ze związkami
Przykład. Związki binarne 1:M postaci
nie są odwzorowywane w modelu relacyjnym.
Np.
2008/2009
- Notatki
do wykładu
"Podstawy
2009/2010 - Notatki
do wykładu
"Podstawy
baz danych"
baz danych"
28
28
Transformacja encji ze związkami
Przykład. Transformacja związku 1:1 obustronnie opcjonalnego.
CREATE TABLE Pracownicy
( id_p NUMBER(4) PRIMARY KEY,
nazwisko VARCHAR2(20) NOT NULL,
imie VARCHAR2(20) NOT NULL,
nr_inwentarzowy NUMBER(4),
FOREIGN KEY (nr_inwentarzowy) REFERENCES Samochody
(nr_inwentarzowy)
);
CREATE TABLE Samochody
( nr_inwentarzowy NUMBER(4) PRIMARY KEY,
nr_rejestracyjny VARCHAR2(20) NOT NULL,
id_pracownika NUMBER(4),
FOREIGN KEY (id_pracownika) REFERENCES Pracownicy
(id_pracownika)
);
2009/2010 - Notatki do wykładu "Podstawy baz danych"
29
Transformacja encji ze związkami
Przykład. Transformacja związku 1:1 jednostronnie opcjonalnego.
CREATE TABLE Pracownicy
( id_p NUMBER(4) PRIMARY KEY,
nazwisko VARCHAR2(20) NOT NULL,
imie VARCHAR2(20) NOT NULL,
);
CREATE TABLE Samochody
( nr_inwentarzowy NUMBER(4) PRIMARY KEY,
nr_rejestracyjny VARCHAR2(20) NOT NULL,
id_pracownika NUMBER(4) NOT NULL UNIQUE,
FOREIGN KEY (id_pracownika) REFERENCES Pracownicy
(id_pracownika)
);
2009/2010 - Notatki do wykładu "Podstawy baz danych"
30
Transformacja encji ze związkami
Przykład. Związek binarny M:N obustronnie opcjonalny postaci
jest transformowany na tabelę Studenci i Przedmioty a związek
jest transformowany do tabeli Zapisy.
Np.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
31
Transformacja encji ze związkami
CREATE TABLE Studenci
( id_studenta NUMBER(4) PRIMARY KEY,
nazwisko VARCHAR2(20) NOT NULL,
imie VARCHAR2(20) NOT NULL,
);
CREATE TABLE Przedmioty
( id_przedmiotu NUMBER(4) PRIMARY KEY,
nazwa VARCHAR2(20) NOT NULL,
);
Np.
CREATE TABLE Zapisy
( id_studenta NUMBER(4) NOT NULL,
id_przedmiotu NUMBER(4) NOT NULL,
FOREIGN KEY (id_studenta) REFERENCES Studenci (id_studenta),
FOREIGN KEY (id_przedmiotu) REFERENCES Przedmioty
(id_przedmiotu),
PRIMARY KEY (id_studenta, id_przedmiotu)
);
2009/2010 - Notatki do wykładu "Podstawy baz danych"
32
Transformacja encji ze związkami
Przykład. Encja Pracownik ze związkiem unarnym postaci:
jestNp.
transformowana na tabelę Pracownicy.
CREATE TABLE Pracownicy
( id_pracownika NUMBER(4) PRIMARY KEY,
nazwisko VARCHAR2(20) NOT NULL,
imie VARCHAR2(20) NOT NULL,
id_szefa NUMBER(4),
FOREIGN KEY (id_szefa) REFERENCES Pracownicy
(id_pracownika)
);
2009/2010 - Notatki do wykładu "Podstawy baz danych"
33
Transformacja encji ze związkami
Przykład. Encja Faktura ze związkami wyłącznymi postaci
jest transformowana na tabelę Faktury.
CREATE TABLE Faktury
( numer NUMBER(4) PRIMARY KEY,
data DATE NOT NULL,
kwota NUMBER(8,2) NOT NULL,
pesel VARCHAR2(11),
regon VARCHAR2(11),
FOREIGN KEY (pesel) REFERENCES Osoba (pesel),
FOREIGN KEY (regon) REFERENCES Firma (regon),
);
2009/2010 - Notatki do wykładu "Podstawy baz danych"
34
Transformacja encji
Przykład. Transformacje hierarchii generalizacji Osoba można
zrealizować tworząc dwie tabele Studenci i Pracownicy biorąc do
nich atrybuty wspólne i odpowiednio atrybuty z odpowiedniej
podencji.
Np.
2009/2010 - Notatki do wykładu "Podstawy baz danych"
35
Download