Przekształcanie
Przekształcanie modelu konceptualnego do modelu relacyjnego.
Zbiory encji
Zbiory encji przekształcane są w relacje, a towarzyszące im atrybuty w
odpowiednie atrybuty relacji:
Osoby (Imię, Nazwisko, PESEL , Wiek)
Relacje, które odpowiadają zbiorom słabych encji, poza własnymi atrybutami, muszą
zawierać atrybuty będące kluczami wszystkich zbiorów encji, które służą do
ich identyfikacji (poprzez związek identyfikujący). Atrybuty te (będąc de facto kluczami obcymi) wchodzą w skład klucza głównego tej relacji:
Muzea (Nazwa)
Wystawy (Nazwa, Tytuł)
FK(Nazwa):Muzea
Bilety (Nazwa, Tytuł, Rodzaj, Cena)
FK(Nazwa,Tytuł):Wystawy
W sytuacji, gdy nazwy atrybutów powtarzają się lub jeśli występuje obawa niejednoznaczności,
można zmienić nazwę atrybutu, tak aby zawierał nazwę zbioru encji, z którego pochodzi:
Bilety (Nazwa_muzeum, Tytuł_wystawy, Rodzaj, Cena).
Związki
Krotność 1-do-1
Związki o krotności 1-do-1 przekształcamy w taki sposób, aby jedna z
relacji, będących odpowiednikiem zbioru encji uczestniczących w związku,
posiadała wszystkie atrybuty, które są kluczami drugiej relacji. Innymi słowy
do tej relacji dodajemy klucz obcy wzięty z drugiej relacji.
W zasadzie nie ma znaczenia, którą relację wybierzemy, tym niemniej w sytuacji,
gdy dla jednej ze stron związku jest on obowiązkowy, a dla drugiej nie, to
dodatkowe atrybuty umieszczamy właśnie w tej relacji. Atrybuty wzięte
z drugiej relacji nie wchodzą w skład klucza głównego relacji:
Konkursy (Nazwa)
Zwycięzcy (Imię, Nazwisko, Nazwa_konkursu)
FK(Nazwa_konkursu):Konkursy
Jeśli związek posiada atrybuty, to są one umieszczane w tej relacji, do której dodano klucz obcy.
Krotność 1-do-n
Związki o krotności 1-do-n przekształcamy w taki sposób, aby
relacja, która odpowiada zbiorowi encji, które posiadają w związku
co najwyżej jednego partnera (stoją po stronie n), poza własnymi
atrybutami, posiadały również atrybuty kluczowe drugiej relacji.
Mówiąc krótko – w relacji stojącej po stronie n dodajemy klucz obcy wzięty z relacji
stojącej po stronie 1 związku.
Dodatkowe atrybuty nie wchodzą do klucza tej relacji:
Reżyserzy (Imię, Nazwisko)
Filmy (Tytuł, Rok, Imię_reżysera, Nazwisko_reżysera)
FK(Imię_reżysera, Nazwisko_reżysera):Reżyserzy
Jeśli związek posiada atrybuty, to są one umieszczane w tej relacji, która stoi po stronie n związku.
Krotność n-do-n
Związki o krotności n-do-n wymagają utworzenia dodatkowej relacji.
Relacja ta zawiera wszystkie atrybuty kluczowe relacji, odpowiadających
zbiorom encji uczestniczącym w związku. Zatem posiada ona dwa klucze obce
odwołujące się do relacji odpowiadających zbiorom encji uczestniczącym w związku. Atrybuty wchodzące w skład tych kluczy obcych stanowią klucz główny tej dodatkowej relacji.
Aktorzy (Imię, Nazwisko), Filmy (Tytuł, Rok)
Aktorzy_Filmy (Imię_aktora, Nazwisko_aktora, Tytuł_Filmu, Rok_Filmu)
FK(Imię_aktora, Nazwisko_aktora):Aktorzy
FK(Tytuł_Filmy,Rok_Filmu):Filmy.
Nazwa nowej relacji może być taka sama jak nazwa związku. Częściej jednak stosuje się nazwy typu Aktorzy_Filmy, Aktorzy_do_Filmy, etc.
Jeśli związek posiada atrybuty, to są one umieszczane obok atrybutów kluczowych relacji, odpowiadających zbiorom encji uczestniczącym w związku.
Związki rekurencyjne
W przypadku związków rekurencyjnych stosowane są te same zasady co w
przypadku pozostałych typów związków, z zastrzeżeniem, że nazwy atrybutów
kluczowych odpowiadają rolom encji uczestniczących w związku:
Węzły (Id, Wartość, Rodzic_Id)
FK(Rodzic_Id):Węzły
Relacja isa
Relacja isa może być przekształcana na trzy sposoby:- pełna relacja dla każdego zbioru encji
- niepełna relacja dla każdego zbioru encji
- jedna relacja dla wszystkich zbiorów encji
Pełna relacja dla każdego zbioru encji
Każdy zbiór encji, który uczestniczy w relacji isa, posiada własną relację, która zawiera wszystkie atrybuty zarówno bardziej ogólnego, jak i bardziej specyficznego zbioru encji:- Ciała niebieskie (Nazwa, Promień, Temperatura, Masa)
- Księżyce (Nazwa, Promień, Temperatura, Masa, Promień orbity, Planeta nazwa)
- Planety (Nazwa, Promień, Temperatura, Masa, Jasność, Promień orbity, Gwiazda nazwa)
- Gwiazdy (Nazwa, Promień, Temperatura, Masa, Jasność)
Niepełna relacja dla każdego zbioru encji
Każdy zbiór encji, który uczestniczy w relacji isa, posiada własną relację, która oprócz atrybutów specyficznych dla danego zbioru encji, posiada atrybuty kluczowe zbioru bardziej ogólnego:- Ciała niebieskie (Nazwa, Promień, Temperatura, Masa)
- Księżyce (Nazwa, Promień orbity, Planeta nazwa)
- Planety (Nazwa, Promień orbity, Jasność, Gwiazda nazwa)
- Gwiazdy (Nazwa, Jasność)
Jedna relacja dla wszystkich zbiorów encji
Wszystkie zbiory encji uczestniczące w relacji isa, posiadają jedną tabelę, która zwiera atrybuty będące sumą atrybutów wszystkich zbiorów encji oraz jeden dodatkowy atrybut, np. typu string o nazwie typ, zawierający nazwę zbioru encji. Ten dodatkowy atrybut pozwala odróżnić encje, które w modelu konceptualnym należały do różnych zbiorów, a w modelu relacyjnym należą do tej samej relacji. Jeśli dwa zbiory encji posiadają atrybuty o tej samej nazwie, lecz o różnych domenach, to nazwa jednego z tych atrybutów musi zostać zmieniona:- Ciała niebieskie (Nazwa, Promień, Temperatura, Masa, Promień orbity, Jasność, Typ, Planeta nazwa, Gwiazda nazwa)