Bazy danych – wykład trzeci
Przekształcenie modelu ER na model relacyjny
Konrad Zdanowski
Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
1 / 19
Przekształcanie modelu ER na projekt relacyjny
Ka˙zda encja przekształcana jest na relacj ˛e o tym samym zbiorze
atrybutów.
Ka˙zdy zwi ˛
azek przekształcany jest na relacj ˛e o atrybutach
b ˛edacych kluczami wchodz ˛
acych w zwi ˛
azek encji.
Potencjalne problemy:
słabe encje,
zwi ˛
azki typu jest,
niektóre relacje warto poł ˛
aczy´c w jedn ˛
a (np. relacj ˛e dla encji i jej
zwi ˛
azku typu wiele do jeden).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
2 / 19
Przekształcanie modelu ER na projekt relacyjny
Przekształcaj ˛
ac projekt ER na projekt relacyjny chcemy:
unikn ˛
a´c nadmiernego wykorzystania pami ˛eci,
unikn ˛
a´c powtarzania tej samej informacji w wielu miejscach.
Spełnienie powy˙zszych wskaza ´n jest mo˙zliwe dzi ˛eki odpowiedniemu
zdefiniowaniu wi ˛ezów w projekcie ER.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
3 / 19
Reprezentowanie encji
Encj ˛e przekształcamy na relacj ˛e o tych samych atrybutach.
Przykład.
Osoba
imie
nazwisko
adres
telefon
id
Osoba(id, imie, nazwisko, adres, telefon)
Atrybut
id jest kluczem relacji Osoba.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
4 / 19
Reprezentowanie zwi ˛
azków
Zwi ˛
azek przekształcamy na relacj ˛e, której atrybutami s ˛
a klucze encji,
które wchodz ˛
a w zwi ˛
azek i atrybuty relacji.
Przykład. Niech id b ˛edzie kluczem relacji osoba a marka,
nr_nadwozia kluczem relacji samochod.
osoba
posiada
samochod
data_zakupu
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
5 / 19
Reprezentowanie zwi ˛
azków
osoba
posiada
samochod
data_zakupu
posiada(wlasciciel_id, marka, nr_nadwozia, data_zakupu).
Kluczem relacji posiada jest zbiór (wlasciciel_id, marka, nr_nadwozia).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
6 / 19
Reprezentowanie zwi ˛
azków
Sposób w jaki reprezentujemy zwi ˛
azek zale˙zy od typu zwi ˛
azku.
Zwi ˛
azki typu wiele do wiele (M:N) reprezentujemy jako oddzielne
relacje (jak w poprzednim przykładzie).
Zwi ˛
azki funkcyjne typu jeden do jeden (1:1) lub wiele do jeden
(M:1) reprezentujemy jako pola w relacji dla encji b ˛ed ˛
acej po
stronie dla której istnieje zale˙zno´s´c funkcyjna lub po stronie wiele.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
7 / 19
Reprezentowanie zwi ˛
azków 1:M jednostronnie
obowi ˛
azkowych
fabryka
wyprodukowala
samochod
data_produkcji
Powy˙zszy zwi ˛
azek reprezentujemy przez dodanie atrybutów klucza
relacji
fabryka do relacji samochod i atrybutów zwi ˛
azku.
samochod(marka, nr_nadwozia, kolor, fabryka_id, data_produkcji).
Klucz
fabryka_id jest kluczem obcym w relacji samochod (NOT
NULL).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
8 / 19
Reprezentowanie zwi ˛
azków 1:M opcjonalnych
Zwi ˛
azki opcjonalne typu jeden do wiele mo˙zemy reprezentowa´c
podobnie jak zwi ˛
azki obowi ˛
azkowe.
Ró˙znica w reprezentacji polega na tym, ˙ze pozycja b ˛ed ˛
aca
kluczem obcym mo˙ze by´c równa NULL.
Je´sli wiemy, ˙ze zwi ˛
azek taki zachodzi rzadko, mo˙zemy rozwa˙zy´c
stworzenie oddzielnej tabeli jak w przypadku zwi ˛
azku typu (M:N)
aby oszcz ˛edzi´c miejsce (lecz ewentualny zysk zale˙zy od
własno´sci modelowanego ´swiata – poza tym spowolniamy odczyt
danych).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
9 / 19
Zwi ˛
azki opcjonalne typu 1:1
Zwi ˛
azki takie mo˙zemy reprezentowa´c przez dodanie klucza
obcego do jednej z tabel.
W uzasadnionych przypadkach mo˙zemy rozwa˙zy´c dodanie klucza
obcego do obu tabel (je´sli wiemy, ˙ze przy´spieszy to wyszukiwanie
w BD).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
10 / 19
Przykład.
poslubil
mezczyzna
kobieta
Trzy sposoby na reprezentowanie zwi ˛
azku poslubil.
1
mezczyzna(id, ...,
zona_id), kobieta(id, ..., maz_id),
2
mezczyzna(id, ...,
zona_id), kobieta(id, ...),
3
mezczyzna(id, ...), zona(id, ...,
maz_id).
Klucze obce w relacjach mog ˛
a by´c równe NULL.
Reprezentowanie zwi ˛
azku w pierwszy ze sposobów mo˙ze prowadzi´c
do problemów z niespójno´sci ˛
a danych lecz ułatwia wyszukiwanie.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
11 / 19
Zwi ˛
azki unarne typu wiele do jeden
Zwi ˛
azki unarne (pomi ˛edzy t ˛
a sama encj ˛
a) reprezentujemy przez
dodanie pola w relacji dla tej encji.
Pole to b ˛edzie kluczem obcym dla danej relacji.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
12 / 19
Przykład.
pracownik
podlega
kieruje
pracuje_dla
Zwi ˛
azek reprezentujemy jako pracownik(id, ...,
kierownik_id).
Zauwa˙zmy, ˙ze w tym przypadku klucz obcy jest pobrany z tej samej
relacji pracownik.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
13 / 19
Zwi ˛
azki unarne typu wiele do wiele
Zwi ˛
azki takie reprezentujemy jako oddzielne relacje.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
14 / 19
Ogólne zasady reprezentowania zwi ˛
azków
Zwi ˛
azki typu wiele do jeden (M:1) reprezentujemy jako klucze
obce w relacji wyst ˛epuj ˛
acej po stronie wiele.
Zwi ˛
azki obowi ˛
azkowe reprezentujemy przez warunek NOT NULL
nało˙zony na klucz obcy.
Zwi ˛
azki typu wiele do wiele reprezentujemy przez oddzieln ˛
a
tabele.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
15 / 19
Podklasy encji
filmy
ISA
kreskowki
musicale
rezyser
rysownik
kompozytor
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
16 / 19
Podklasy encji
Podlasy encji mo˙zemy reprezentowa´c:
1
jako jedn ˛
a relacj ˛e, w której pewne pola mog ˛
a by´c puste (NULL) i
dodatkowym atrybutem okre´slaj ˛
acym rodzaj elementu,
2
jako oddzielne relacje dla ka˙zdej podklasy zawieraj ˛
ace wszystkie
atrybuty wspólne,
3
jako oddzieln ˛
a relacj ˛e z atrybutami wspólnymi i relacje
zawieraj ˛
ace atrybuty podklas, w której klucze obce wskazuj ˛
a na
element tabeli wspólnej.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
17 / 19
Słabe encje
gatunek
nalezy
rodzaj
nazwa
nazwa
Relacja stworzona dla słabego zbioru encji musi zawiera´c
wszystkie klucze relacji dla pomocniczych zbiorów encji.
Klucze te wchodz ˛
a (jako klucz obcy) w skład klucza tej relacji.
Nie musimy reprezentowa´c pomocniczego zwi ˛
azku jako relacji.
Atrybuty tego zwi ˛
azku mo˙zemy umie´sci´c w relacji stworzonej dla
słabej encji.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
18 / 19
Słabe encje
gatunek
nalezy
rodzaj
nazwa
nazwa
Słab ˛
a encj ˛e gatunek reprezentujemy jako relacj ˛e
gatunek(nazwa_gatunkowa, nazwa_rodzajowa, ...).
Atrybut
nazwa_rodzajowa wchodzi w skład klucza relacji. Nie mo˙ze
by´c równy NULL.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład trzeci Przekształcenie modelu ER na model relacyjny
19 / 19