Databaser Aflevering 2



Relaterede dokumenter
Søren Løbner (lobner) ddb Databaser

Gmail Beskrivelse af Gmail.

Hjelp til Speedadmin. Fakturering

skriv disse seks tal omhyggeligt ned

Øv dig i at lære at arbejde med spirituel healing

Prokuraopsætning i IndFak

I spilformer, hvor der spilles mod hinanden, kan der med fordel startes med et baggerslagskast, så der skabes flow i spillet.

Retningslinjer for indsendelse af adressefiler til produktet

Din læringsrejse. En guide til Det Fælles Lederaspirantforløb. i Aarhus Kommune

Vejledning til Plakater

Tjek-begreber. Læremiddeltjek bygger på seks parametre: Tilgængelighed Progression Differentiering Lærerstøtte Sammenhæng Legitimitet

I dette dokument kan du finde information og inspiration til, hvordan I kan komme i gang i dit lokalområde. Dette er en guide til de ting, som

Mig og min ADHD -profil:

- 3 timer. 1. Norske turister i Danmark. o Hvor mange norske turister. o Beregn det gennemsnitlige

Tilgængelighed. I hvilken udstrækning og på hvilken måde understøtter udtryk, indhold og aktiviteter læremidlets tilgængelighed?

Eksempler på beregning af forskellige tilskudsmodeller

Nærværende dokument beskriver ny og ændret funktionalitet samt fejlrettelser siden forrige release.

! Viden om dåben. Dåben. Julie Sløk, Lektion 3

Opsamling, Workshop, Bedst Praksis Ledelse

Generelle kostråd til svømmerne i Holstebro Elitesport

T Brugervejledning - Lugtberegning

Verdensborger. Hjem. Målgruppe: Spirer og grønsmutter. Varighed: 3 trin + et engagement

Christian Hjortshøj. HTX Roskilde Lære: Bartlomiej Warszawski. Fag: KomIT 1 S ide

Flere registreres i RKI

Indledning. Side 2 af 13

SMTTE-model for temaet Indianer

Biogasproduktion i Tyskland

Trivselsplan for Peder Lykke Skolen

REKRUTTERING OG UDVÆLGELSE JOB- OG KRAVPROFIL JOB- OG KRAVPROFIL SEKTIONSLEDER SUNDHED OG TRIVSEL BØRN OG UNGE AARHUS KOMMUNE

Tjekliste Ehlers-Danlos syndrom

Insemination med donor sæd

Sådan undgår du, at dit barn bliver mobbet

År Computerspil. Nils Per Olsen og Martin Vigholt. Computerspil

AU Timeløn. Timelønnede medarbejdere - Vejledning. TIMEmSYSTEM ApS. Link: Version 3.0

FAQ spørgsmål og svar om Spejdernes Medlemsservice

Bedre Psykiatris vurdering af Handlingsplan til forebyggelse af vold på botilbud

Transkript:

Databaser Aflevering 2 E/R diagram lavet i samarbejde med Anders Halager & Trels Hansen. De Danske Rustne Baner (DRB) vil have lavet en database sm skal køre deres E-ticket system. Af de frskellige ting sm eventuelt kan kmme med inkluderer: Trains, wagns, seats, cnnectins, passengers, E-tickets, seat reservatins & railway statins. Trains & wagns: Efter lidt drøftelse fandt vi hurtigt ud af at der ingen behv var fr en Trains entity. Når flk køber billetter køber de kun rettigheden til at rejse på givne strækninger g ikke til bestemte tg. Vgnene hænger heller ikke altid sammen da de kan deles g samles på vilkårlige statiner så rdet tg er ikke helt så brugbart. Når de rejsende ikke har pladsbillet er strt set hverken tg, vgn eller sæde relevant fr dem ud ver at de måske vil vide hvilke vgne der kører på hvilke strækninger. Runs-On relatinen beskriver hvilke vgne der kan køre på hvilke strækninger. Mange vgne kan køre på én cnnectin g én cnnectin kan gdt have mange vgne kørende på sig. Wagns( ID ) Single-value cnstraint: Ikke t vgne må have samme ID. Runs-On( WagnID, Depart, Arrive, StartName, EndName ) Side 1 af 6

Seats: Vi skelner ikke mellem sæder i tgene så både 1st class, ecnmic g senge i svevgnene da de j alle har næsten samme egenskaber. Hvis vi f.eks. havde skelnet mellem pladserne fra sve-vgnene g pladserne fra de nrmale vgne (1st class g ecmnic) sm helt frskellige entities ville vi få en del redundancy. Det eneste sm sve-vgnene har til frskel er en level attribut sm frtæller m sengen er øverst eller nederst. Vi valgte at give Seat en type attribut sm kan repræsentere alle typer sæder. Værdierne fr type kan være: { Ecnmic, 1stClass, BedLvl1, BedLvl2 } Hvr vidt m sæderne skulle have været i et is-a hierarki i stedet er svært at sige, da Ecnmy g 1stClass attributmæssigt ikke er frskellige. Så skulle de t samles i Seat attributten g skelnes imellem med en type attribut g så vil det kun være Bed der er en specialudgave af Seat. Men i sådan et tilfælde vil Bed gså have en type attribut sm ikke er meningen at den skal have da der f.eks. ikke findes 1st class Beds. Vi kunne sagtens have lavet en cnstraint der frbød Seat i at have en type attribut (type skal være null) hvis den er en bed, men der er derved et unødigt tmt felt g laver lidt redundancy. Vi følte at en ren type metde var den bedste løsning. Seat er en weak-entity set da et sæde med et bgstav g række nr. ikke er unik. Der kan findes mange vgne sm indehlder et sæde sm har samme bgstav g række nr., så et sæde kan kun gøres unik når den henter en key fra den vgn den befinder sig i. Fr at mdellere neighburhd sammenhængen mellem sæderne har de et relatinship til hinanden sm vi kalder Clse-t. Hvert sæde kan have mange naber så vi har lavet et many-many relatinship mellem dem. Da Seat er weak skal WagnID gså med fr hvert sæde fr at kunne identificere det rigtige sæde. Seats( Rw, Letter, WagnID, type ) Dmain cnstraint: Type skal være enten Ecnmic, 1stClass, BedLvl1 eller BedLvl2. Clse-T( Rw1, Letter1, WagnID1, Rw2, Letter2, WagnID2 ) General cnstraint: Et sæde må ikke være nab til sig selv. Side 2 af 6

Cnnectins & E-tickets: Mellem hver statin er der en frbindelse sm en billet kan give tilladelse til at køre på. Hver enkelt billet kan give tilladelse til at køre på en mængde af cnnectins så vi bruger en many-ne relatin sm vi kalder Spans da en billet strækker ver en mængde frbindelser. Price 1,2 g 3 beskriver prisen på 1st class, ecnmy class g svepladser. Cnnectin er weak da en enkelt frbindelse der kun har depart g arrive tidspunkter ikke kan ses sm en unik afgang da der gdt kan findes andre frbindelser der har samme depart g arrive tidspunkter. Derfr har Cnnectins gså t statiner sm derved gør afgangen unik. Cnnectins( Depart, Arrive, StartName, EndName, EcPrice, 1stPrice, BedPrice ) General cnstraint: StartName g EndName må ikke være ens. E-Tickets( ID ) Single-value cnstraint: Ikke t billetter må have same ID. Spans( Depart, Arrive, StartName, EndName, E-TicketID ) Passengers: Vi diskuterede en del m dette emne da passagerers navne ikke kan gemmes ved f.eks. køb af billetter ved billetautmater. Det eneste der kunne gemmes var m passageren valgte en børne-, vksen- eller senir-billet. Grunden til at vi i vres mdel ikke har tilladt børn g pensinister at have specielle priser er at vi enten skulle begrænse en rabat-rdning til kun at kunne bruge prcenter. Ellers skulle hver frbindelse have 9 frskellige attributter til priser: "pris1barn", "pris1vksen", "pris1senir", "pris2barn sv. sv. hvilket ikke er særligt smart da hvis der ver hele systemet skulle ændres rabat-priser så skulle samtlige pster i databasen pdateres g endda måske til den samme værdi hvilket giver en hel masse redundancy hvis det var tilfældet. Derfr har vi i første mgang ikke kunne få Passengers med i vres design. Side 3 af 6

Reservatins: Vi har mdelleret reservatiner sm en relatin der er mellem E-tickets, cnnectins g seats. Man kan f.eks. med en billet g en frbindelse finde det matchende sæde g andre lignende kmbinatiner. En reservatin er altid bundet til én billet, én frbindelse g et sæde. Dvs. at der kan tilhøre mange reservatiner til samme billet da en reservatin kun tilhører én strækning. Vi er dg ikke begrænset til at der kun kan tilhøre én reservatin pr. frbindelse pr. billet. Det åbner gså p fr at man kan bestille en ekstra pladsbillet til f.eks. sin taske sm det er muligt i virkeligheden. Reservatins( E-TicketID, Depart, Arrive, StartName, EndName, Rw, Letter, SeatID ) Railway statins: Hver frbindelse indehlder både en start g en slut tg-statin (pilene viser at hver frbindelse har t statiner). Pilenes retning læses sm flere frbindelser kan have én tgstatin eller én tgstatin kan være del af flere frbindelser. Vi har lavet den cnstraint at statinerne ikke må have samme navne af den grund at vi så kun har brug fr én key. Dette frmindsker endda gså antal data der skal gemmes i Cnnectins. Statins( Name, Lcatin ) Single-value cnstraint: Ikke t statiner må have samme navn. Side 4 af 6

Opsummering af Schemas g Cnstraints: Wagns( ID ) Single-value cnstraint: Ikke t vgne må have samme ID. Runs-On( WagnID, Depart, Arrive, StartName, EndName ) Seats( Rw, Letter, WagnID, type ) Dmain cnstraint: Type skal være enten Ecnmic, 1stClass, BedLvl1 eller BedLvl2. Clse-T( Rw1, Letter1, WagnID1, Rw2, Letter2, WagnID2 ) General cnstraint: Et sæde må ikke være nab til sig selv. Cnnectins( Depart, Arrive, StartName, EndName, EcPrice, 1stPrice, BedPrice ) General cnstraint: StartName g EndName må ikke være ens. E-Tickets( ID ) Single-value cnstraint: Ikke t billetter må have same ID. Spans( Depart, Arrive, StartName, EndName, E-TicketID ) Reservatins( E-TicketID, Depart, Arrive, StartName, EndName, Rw, Letter, SeatID ) Statins( Name, Lcatin ) Single-value cnstraint: Ikke t statiner må have samme navn. Referential Integrity cnstraints kan ses på E/R diagrammet. Side 5 af 6

E/R Diagram Nte: Vi bruger Luis ntatin fr Referential Integrity frem fr bgens. = 1 = 0 eller 1 - (bruges ikke i vres design) Side 6 af 6