Preslikava razmerja
Način preslikave razmerja v relacijsko shemo je določen s števnostjo razmerja. Glede na števnost razmerja: 1:M, M:N ali 1:1 je potrebno uporabiti ustrezno pravilo.
Preslikava razmerja s kardinalnostjo 1:M
Pri preslikavi razmerja s števnostjo 1:M uporabimo naslednja pravila
- Ključ na strani razmerja s kardinalnostjo 1 dodamo kot nov stolpec v tabelo, ki predstavlja entitetni tip na strani M. Takemu ključu pravimo tuji (foreign) ključ.
- Če gre za identifikacijsko razmerje (identifying relationship - povezava predstavlja razmerje med šibko in močno entitete), je tuji ključ sestavni del ključa šibke entitete.
- Če gre za neidentifikacijsko razmerje (nonidentifying relationship - povezava predstavlja razmerje med močnimi entitetami), ostaneta ključa entitet nespremenjena.
Preslikava razmerja s kardinalnostjo M:N
Pravila pri preslikavi razmerja s števnostjo M:N v relacijsko shemo so:
- Razmerje s kardinalnostjo M:N vedno preslikamo v novo relacijo.
- Atributi tabele so ključi entitetnih tipov, ki so povezani z razmerjem in skupaj tvorijo ključ novonastale relacije. Ključ relacije, ki nastane kot posledica razmerja M:N, je vedno sestavljen.
- V novonastalo relacijsko shemo dodamo še atribute razmerja. Ti atributi načeloma niso sestavni del ključa razmerja, obstajajo pa tudi izjeme.
Primer preslikave razmerja s števnostjo M:N
Model ER
Model ER ima tri močne entitetne tipe (Igralec, Film in Nagrada) in dve razmerji s števnostjo M:N (Igra in Dobi). Zato moramo v relacijskem modelu narediti pet relacijskih shem.
Relacijski model
Igralec - relacija, ki predstavlja močan entitetni tip
- Igralec(IgralecID:N,Priimek:A20,Ime:A20)
Film - relacija, ki predstavlja močan entitetni tip
- Film: Film(FilmID:N,Ime_filmao:A20)
Nagrada - relacija, ki predstavlja močan entitetni tip
- Nagrada(NagradaID:A4, ImeNagrade:A20, Opiso:A20)
Igra - relacija, ki predstavlja razmerje s števnostjo M:N (razmerje ima svoj atribut Vloga )
- Igra(IgralecID→Igralec:N,FilmID→Film:N, Vlogao:A20)
Dobi - relacija, ki predstavlja razmerje s števnostjo M:N (razmerje nima lastnih atributov)
- Dobi(IgralecID→Igralec:N,FilmID→Film:N, NagradaID→Nagrada:A4)
V principu je preslikava razmerja s števnostjo 1:1 enaka, kot v primeru preslikave razmerja s števnostjo 1:M. Pri enem od entitetnih tipov ustvarimo oziroma dodamo tuji ključ (nikakor pa ne pri obeh, ker bi to pripeljalo do nenadzorovane redundance).
Primer preslikave razmerja s števnostjo 1:1
Model ER
V relacijskem podatkovnem modelu lahko naredimo 3 inačice relacijskih shem.
Prva varianta
Eni od relacij dodamo znanji ključ.
Delavec (DelavecID,PMestoID→Parkirno_mesto) ali Parkirno_mesto(PMestoID,DelavecID→Delavec)
Druga varianta
Preslikavo razmerja s števnostjo 1:1 lahko rešimo tudi tako, da vpeljemo dodatno tabelo, ki vsebuje le ključe povezanih entitetnih tipov. Oba ključa predstavljata kandidata za ključ novonastale relacije. Zato, za ključ novonastale tabele izberemo le enega od atributov, nikakor pa ne obeh, ker bi to porušilo kardinalnost razmerja 1:1. Kot rešitev po drugi varianti bi lahko naredili eno od naslednjih dveh relacij:
Ima(DelavecID→Delavec,PMestoID→Parkirno_mesto) ali Ima(DelavecID→Delavec,PMestoID→Parkirno_mesto)
Tretja varianta
Če imamo razmerje 1:1 s popolno udeležbo obeh entitet v razmerju (na obeh straneh je kardinalnost (1,1)), potem za obe entiteti in razmerje kreiramo le eno skupno relacijo, v kateri združimo atribute obeh entitet. V tem primeru imamo dva kandidata za ključ relacije. To sta ključa povezanih entitetnih tipov. Za ključ relacije izberemo samo enega. Možni rešitvi:
Delavec(DelavecID,PMestoID) ali Parkirno_mesto(PMestoID,DelavecID)
Ta rešitev ni ravno priporočljiva, ker v primeru brisanja podatkov o delavcu, hkrati izgubimo tudi podatke o parkirnem mestu in obratno.