Databaser, efterår 2002 Fra ER til RM Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Fra ER til RM Fra ER til RM-skema Generelt princip en relation for hver Entitets-type en relation for hver Sammenhæng evt. modificeret yderligere ved sammenlægning af fremkomne relations-skemaer Troels Andreasen 2
Fra ER til RM-skema Entitets-type E med attributter A 1,, A k RM-skema: E (A 1,, A k ) Sammenhæng S mellem E 1,, E k alle nøgle-attributter i E 1,, E k : N 1,, N n RM-skema: S(N 1,, N n ) "omdøbning" af attributter kan være nødvendig Svag Entitets-type E med A 1,, A k "lånte" nøgle-attributter N 1,, N n Subtype E med attributter A 1,, A k Supertypes nøgler N 1,, N n RM-skema : E (N 1,, N n, A 1,, A k ) den svage sammenhæng forsvinder, influerer også andre sammenhænge med E RM-skema: E (N 1,, N n, A 1,, A k ) Troels Andreasen 3
Fra ER til RM-skema Person RM-skema: Person(, ) Person Husnr Hus Fag RM-skema: Person(, ) Hus(Husnr, Fag) Tilhører(, Husnr) Tilhører Lnr RM-skemaer: Land(Lnr, ) Person(, Lnr, ) Person Borger-i Land Troels Andreasen 4
Fra ER til RM-skema, Subtype Person Relations-skemaer: Person(, ) Studerende(, Fag) isa Studerende Fag Troels Andreasen 5
Fra ER til RM-skema, Subtype Alternativ 1: Bevar abstraktion fra ER model SKEMA: Person(, ) ansat(, Løn) studerende(, Status) Person FOREKOMST Løn isa Ansat isa Studerende Status person pnr navn 7 Lisa 17 Peter 35 Hans ansat pnr løn 7 22000 studerende pnr status 17 10 Troels Andreasen 6
Fra ER til RM-skema, Subtype, Alternativ 2: Sammenlæg til enkelt relation Subtype alternativ 1 een relation for supertypen og alle dens subtyper SKEMA: Person(,, Løn, Status) FOREKOMST Person isa isa person pnr navn løn status 7 Lisa 22000 null 17 Peter null 10 35 Hans null null Løn Ansat Studerende Status Troels Andreasen 7
Fra ER til RM-skema, Subtype Alternativ 3: OO-stil - totalt brud med ER model Subtype alternativ 2 en relation for supertypen en relation for alle subtyper hver med alle nedarvede attributter SKEMA: Person(, ) ansat(, Løn, ) studerende(, Status, ) FOREKOMST Person person pnr navn 7 Lisa ansat pnr løn 7 22000 navn Lisa isa isa studerende pnr status 17 10 navn Peter Løn Ansat Studerende Status Troels Andreasen 8
Fra ER til RM-skema, nøgler... NØGLER FRA ER-DIAGRAMMET Entitets-type Sammenhæng Subtype Svag entitetstype Troels Andreasen 9
Fra ER til RM-skema, nøgler... Entitets-type relations-nøgle: nøglen fra Entitets-typen Person Person(, ) Troels Andreasen 10
Fra ER til RM-skema, nøgler Sammenhæng relations-nøgle: nøgler fra mange-siderne f.eks. mange af: E 1,, E k-1 en af: E k relations-nøgle: nøglerne fra E 1,, E k-1 specielt En-til-en: nøgle vælges som nøglen fra een af Entitets-typerne Bnr Model Person ejer Bil ejer(pnr,bnr) mor Person gift-med mor(pnr1,pnr2) gift-med(pnr1,pnr2) Troels Andreasen 11
Fra ER til RM-skema, nøgler Subtype relations-nøgle (uanset princip for oversættelse til relation): nøglen fra supertypen isa Person isa Supertype Person(, ) Subtyper ansat(, Løn, ) studerende(, Status, ) Løn Ansat Studerende Status Troels Andreasen 12
Fra ER til RM-skema, nøgler Svag entitets-type relations-nøgle: nøglen fra Entitets-typen + lånte nøgler Lnr Person Borger-i Land Person(pnr, lnr, navn) Troels Andreasen 13
Eksempel isa Person isa Status Studerende Lærer Løn Deltager Vejleder Læser Underviser Pronr Projekt Fag Fagkode Modul Troels Andreasen 14
Eksempel Eksempel Relationsskemaer: Person(, ) studerende(, Status) Lærer(, Løn) Projekt(Pronr,, Modul) Fag(Fagkode, ) Deltager(, Pronr) Vejleder(Pronr, ) Læser(, Fagkode) Underviser(, Fagkode) Troels Andreasen 15
Modifikationer i RM-skemaet Relationer med en fælles nøgle kan kombineres. Resultat-relation attributter: foreningen af attributterne i de to relationer (omdøbning kan være nødvendig) relations-nøgle: den fælles nøgle Fordele kan være: pladsbesparelse, idet nøgleværdier ikke gentages tidsbesparelse, ved forespørgsler vedrørende aktuelle relationer Ulemper kan være introducerede "null"-værdier og dermed ekstra pladsforbrug et uoverskueligt design Null-værdi: ikke-specificeret værdi, (dvs. ikke kendt eller ikke defineret værdi) Troels Andreasen 16
Modifikationer i RM-skemaet Eksempel, modifikation af RMskema. Relationsskemaer: Person(, ) studerende(, Status) Lærer(, Løn) Projekt(Pronr,, Modul) Fag(Fagkode, ) Deltager(, Pronr) Vejleder(Pronr, ) Læser(, Fagkode) Underviser(, Fagkode) Nye relationsskemaer: Person(, ) studerende(, Status, Pronr) Lærer(, Løn, Fagkode) Projekt(Pronr,, Modul, ) Fag(Fagkode, ) Læser(, Fagkode) Hvad går tabt ved konvertering fra ER til RM? Troels Andreasen 17
Forenkling i oversættelsen Bemærk dog at mange-til-en sammenhænge ofte umiddelbart slås sammen med entitetstypen på mange-siden således at Fnr oversættes direkte til studerende(pnr,navn,fnr) fag(fnr,navn) Studerende Studerer Fag Troels Andreasen 18
Eksempel Hvilket relationelt skema giver en oversættelse? typenavn typeid sæder Bustype af start-tid pnr navn Bus i Tur med Chauffør busid på Busrute rutested Stoppested stedid navn ruteid køre-tid Troels Andreasen 19
Eksempel... ER-skema til et relationelt databaseskema bustype(typeid,typenavn,sæder) bus(busid, typeid) tur(start-tid, ruteid, busid, pnr) chauffør(pnr, navn) busrute(ruteid) rutested(ruteid, stedid, køre-tid) stoppested(stedid, navn) Troels Andreasen 20
"Ækvivalente" ER-skemaer Ofte har vi flere muligheder til at modellere i ER-notation, hvor valget imellem disse muligheder blot er et individuelt skøn om hvad der fremtræder mest overskueligt. Vi kan definere "Ækvivalens": To ER-skemaer er "ækvivalente" hvis oversættelsen af disse fører til samme relationelle skema (begrebet "ækvivalens" for ER er ikke etableret) Troels Andreasen 21
Eksempel Udsnittet start-tid pnr navn Bus i Tur med Chauffør busid på Busrute ruteid har relationelt skema bus(busid) tur(start-tid, ruteid, busid, pnr) chauffør(pnr, navn) busrute(ruteid) hvad nu hvis vi vil modellere tur som en sammenhæng? Troels Andreasen 22
Eksempel... start-tid pnr navn Bus tur Chauffør busid Busrute ruteid Troels Andreasen 23
Eksempel... eller hvad med rutested som entitetstype? Busrute ruteid rutested køre-tid Stoppested stedid navn Troels Andreasen 24
Eksempel... stedid Busrute for rutested har Stoppested navn ruteid køre-tid Troels Andreasen 25