100 likes | 313 Views
Preslikava ER model relacijski model. Razlogi in načini preslikave. Razlogi: SUPB-ji neposredno ne podpirajo ER model SUPB-ji podpirajo relacijski ali objektno-relacijski podatkovni model Načini Avtomatizirano
E N D
Razlogi in načini preslikave • Razlogi: • SUPB-ji neposredno ne podpirajo ER model • SUPB-ji podpirajo relacijski ali objektno-relacijski podatkovni model • Načini • Avtomatizirano • CASE orodja načeloma podpirajo avtomatizacijo procesa kreiranja podatkovne baze • Ročno • Uporabimo pravila za preslikavo in naredimo sheme relacij • Preslikamo: • Entitente tipe • Razmerja
1. preslikava entitetnih tipov • Za vsak entitetni tip kreiramo eno tabelo. • Ime tabele naj bo ime entitetnega tipa (priporočilo). • Stolpci tabele so atributi entitetnega tipa. • Opcijske atribute prevedemo v stolpce, v katerih dovolimo 'NULL' vrednosti oz. neobvezna polja (non-required field). • Ključ entitetnega tipa postane primarni ključ tabele. • Tuji ključi entitetnega tipa postanejo tuji ključi relacije.
Primeri preslikave entitetnih tipov • Potovalna agencija – močna entiteta • Potovalna_agencija(AgencijaID:A20, ImeA:A20, Naslov:A20o, url:A20o) • Katalog – močna entiteta • Katalog(KatalogID:A5,ImeKataloga:A20,AgencijaIDPotovalna_agencija:A20) • Vsebina – šibka entiteta • Vsebina(ZapSt:N,KatalogIDKatalog:A5,Opis:A20,Opomba:A20o)
2. preslikava razmerja2. a preslikava razmerja s kardinalnostjo 1:M • 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
2. preslikava razmerja2. b preslikava razmerja s kardinalnostjo M:N • Razmerje s kardinalnostjo M:N vedno preslikamo v novo tabelo. • Stolpci tabele so ključi entitetnih tipov, ki so povezani z razmerjem in skupaj tvorijo ključ nove tabele. • Ključ tabele, ki nastane kot posledica razmerja M:N, je vedno sestavljen • V novonastalo tabelo 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 • Igralec – močna entiteta: Igralec(IgralecID:N,Priimek:A20,Ime:A20) • Film – močna entiteta: Film(FilmID:N,Ime_filmao:A20) • Nagrada – močna entiteta: Nagrada(NagradaID:A4, ImeNagrade:A20, Opiso:A20) • Igra – razmerje (števnost M:N), razmerje ima svoj atribut Vloga Igra(IgralecIDIgralec:N,FilmIDFilm:N, Vlogao:A20) • Dobi – razmerje (števnost M:N), razmerje nima lastnih atributov: Dobi(IgralecIDIgralec:N,FilmIDFilm:N, NagradaIDNagrada:A4)
2. preslikava razmerja2. c preslikava razmerja s kardinalnostjo 1:1 • V principu je preslikava enaka, kot v primeru preslikave razmerja 1:M. • Pri enem od entitetnih tipov ustvarimo oziroma dodamo še en zunanji ključ (nikakor pa ne pri obeh nenadzorovana redundanca) • Možne rešitve: A) Delavec(DelavecID,PMestoIDParkirno_mesto) ali B) Parkirno_mesto(PMestoID, DelavecIDDelavec)
2. preslikava razmerja2. c preslikava razmerja s kardinalnostjo 1:1 • 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 kandidate za ključ novonastale tabele Zato, za ključ novonastale tabele izberemo le enega od atributov, nikakor pa ne obeh, ker bi to porušilo kardinalnost razmerja 1:1. • Možne rešitve: A) Ima(DelavecIDDelavec,PMestoIDParkirno_mesto) ali B) Ima(PMestoIDParkirno_mesto, DelavecIDDelavec) • Č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 eno skupno tabelo, v kateri združimo atribute obeh entitet. V tem primeru imamo dva kandidata za ključ tabele. To sta ključa povezanih entitetnih tipov. Za ključ tabele izberemo samo enega. • Rešitev: Delavec(DelavecIDDelavec,PMestoID)