Bazy danych – wykład trzeci Przekształcenie modelu ER na model

advertisement
Bazy danych – wykład trzeci
Przekształcenie modelu ER na model relacyjny
Konrad Zdanowski
Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
1 / 19
Przekształcanie modelu ER na projekt relacyjny
Każda encja przekształcana jest na relacje˛ o tym samym zbiorze
atrybutów.
Każdy zwiazek
˛
przekształcany jest na relacje˛ o atrybutach
bedacych
˛
kluczami wchodzacych
˛
w zwiazek
˛
encji.
Potencjalne problemy:
słabe encje,
zwiazki
˛ typu jest,
niektóre relacje warto połaczyć
˛
w jedna˛ (np. relacje˛ dla encji i jej
zwiazku
˛
typu wiele do jeden).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
2 / 19
Przekształcanie modelu ER na projekt relacyjny
Przekształcajac
˛ projekt ER na projekt relacyjny chcemy:
uniknać
˛ nadmiernego wykorzystania pamieci,
˛
uniknać
˛ powtarzania tej samej informacji w wielu miejscach.
Spełnienie powyższych wskazań jest możliwe dzieki
˛ odpowiedniemu
zdefiniowaniu wiezów
˛
w projekcie ER.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
3 / 19
Reprezentowanie encji
Encje˛ przekształcamy na relacje˛ o tych samych atrybutach.
Przykład.
adres
nazwisko
imie
telefon
Osoba
id
Osoba(id, imie, nazwisko, adres, telefon)
Atrybut id jest kluczem relacji Osoba.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
4 / 19
Reprezentowanie zwiazków
˛
Zwiazek
˛
przekształcamy na relacje,
˛ której atrybutami sa˛ klucze encji,
które wchodza˛ w zwiazek
˛
i atrybuty relacji.
Przykład. Niech id bedzie
˛
kluczem relacji osoba a marka,
nr_nadwozia kluczem relacji samochod.
osoba
posiada
samochod
data_zakupu
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
5 / 19
Reprezentowanie zwiazkó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
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
6 / 19
Reprezentowanie zwiazków
˛
Sposób w jaki reprezentujemy zwiazek
˛
zależy od typu zwiazku.
˛
Zwiazki
˛ typu wiele do wiele (M:N) reprezentujemy jako oddzielne
relacje (jak w poprzednim przykładzie).
Zwiazki
˛ funkcyjne typu jeden do jeden (1:1) lub wiele do jeden
(M:1) reprezentujemy jako pola w relacji dla encji bed
˛ acej
˛ po
stronie dla której istnieje zależność funkcyjna lub po stronie wiele.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
7 / 19
Reprezentowanie zwiazków
˛
1:M jednostronnie
obowiazkowych
˛
fabryka
wyprodukowala
samochod
data_produkcji
Powyższy zwiazek
˛
reprezentujemy przez dodanie atrybutów klucza
relacji fabryka do relacji samochod i atrybutów zwiazku.
˛
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
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
8 / 19
Reprezentowanie zwiazków
˛
1:M opcjonalnych
Zwiazki
˛ opcjonalne typu jeden do wiele możemy reprezentować
podobnie jak zwiazki
˛ obowiazkowe.
˛
Różnica w reprezentacji polega na tym, że pozycja bed
˛ aca
˛
kluczem obcym może być równa NULL.
Jeśli wiemy, że zwiazek
˛
taki zachodzi rzadko, możemy rozważyć
stworzenie oddzielnej tabeli jak w przypadku zwiazku
˛
typu (M:N)
aby oszcz˛edzić miejsce (lecz ewentualny zysk zależy od
własności modelowanego świata – poza tym spowolniamy odczyt
danych).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
9 / 19
Zwiazki
˛ opcjonalne typu 1:1
Zwiazki
˛ takie możemy reprezentować przez dodanie klucza
obcego do jednej z tabel.
W uzasadnionych przypadkach możemy rozważyć dodanie klucza
obcego do obu tabel (jeśli wiemy, że przyśpieszy to wyszukiwanie
w BD).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
10 / 19
Przykład.
mezczyzna
poslubil
kobieta
Trzy sposoby na reprezentowanie zwiazku
˛
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 moga˛ być równe NULL.
Reprezentowanie zwiazku
˛
w pierwszy ze sposobów może prowadzić
do problemów z niespójnościa˛ danych lecz ułatwia wyszukiwanie.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
11 / 19
Zwiazki
˛ unarne typu wiele do jeden
Zwiazki
˛ unarne (pomiedzy
˛
ta˛ sama encja)
˛ reprezentujemy przez
dodanie pola w relacji dla tej encji.
Pole to bedzie
˛
kluczem obcym dla danej relacji.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
12 / 19
Przykład.
kieruje
podlega
pracownik
pracuje_dla
Zwiazek
˛
reprezentujemy jako pracownik(id, ..., kierownik_id).
Zauważmy, że w tym przypadku klucz obcy jest pobrany z tej samej
relacji pracownik.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
13 / 19
Zwiazki
˛ unarne typu wiele do wiele
Zwiazki
˛ takie reprezentujemy jako oddzielne relacje.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
14 / 19
Ogólne zasady reprezentowania zwiazków
˛
Zwiazki
˛ typu wiele do jeden (M:1) reprezentujemy jako klucze
obce w relacji wystepuj
˛ acej
˛ po stronie wiele.
Zwiazki
˛ obowiazkowe
˛
reprezentujemy przez warunek NOT NULL
nałożony na klucz obcy.
Zwiazki
˛ typu wiele do wiele reprezentujemy przez oddzielna˛
tabele.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
15 / 19
Podklasy encji
rezyser
filmy
ISA
kreskowki
musicale
rysownik
kompozytor
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
16 / 19
Podklasy encji
Podlasy encji możemy reprezentować:
1
jako jedna˛ relacje,
˛ w której pewne pola moga˛ być puste (NULL) i
dodatkowym atrybutem określajacym
˛
rodzaj elementu,
2
jako oddzielne relacje dla każdej podklasy zawierajace
˛ wszystkie
atrybuty wspólne,
3
jako oddzielna˛ relacje˛ z atrybutami wspólnymi i relacje
zawierajace
˛ atrybuty podklas, w której klucze obce wskazuja˛ na
element tabeli wspólnej.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
17 / 19
Słabe encje
gatunek
nazwa
nalezy
rodzaj
nazwa
Relacja stworzona dla słabego zbioru encji musi zawierać
wszystkie klucze relacji dla pomocniczych zbiorów encji.
Klucze te wchodza˛ (jako klucz obcy) w skład klucza tej relacji.
Nie musimy reprezentować pomocniczego zwiazku
˛
jako relacji.
Atrybuty tego zwiazku
˛
możemy umieścić w relacji stworzonej dla
słabej encji.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
18 / 19
Słabe encje
gatunek
nazwa
nalezy
rodzaj
nazwa
Słaba˛ encje˛ gatunek reprezentujemy jako relacje˛
gatunek(nazwa_gatunkowa, nazwa_rodzajowa, ...).
Atrybut nazwa_rodzajowa wchodzi w skład klucza relacji. Nie może
być równy NULL.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana
Bazy danych
Wyszyńskiego,
– wykładWarszawa)
trzeci Przekształcenie modelu ER na model relacyjny
19 / 19
Download