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