SIF8041 OPERATIVSYSTEMER OG DATABASER
våren 2001
ØVING 3 : Datamodellering
INNLEVERINGSFRIST : Onsdag 07.03.00
GRUPPESTØRRELSE : 2 -3. Lever svarene på papir.
Vi skal lage en EER-modell og tabeller for en del av en sykehusdatabase. Databasen skal inneholde informasjon om ansatte, barn av ansatte, pasienter og pårørende. En ansatt kan også ha vært eller være pasient. For alle personer skal vi lagre informasjon om aktuell bostedskommune og bostedsadresse med gateadresse, postnummer og poststed. Vi skal også lagre et eller flere telefonnummer som vedkommende kan nås på.
Sykehuset er organisert i avdelinger som igjen kan være inndelt i underavdelinger, osv. De fleste avdelinger er ledet av en sjef, men for pasientbehandlende avdelinger er det to sjefer, en for den medisinske behandling og en for pleiefunksjonen.
For ansatte skal vi lagre stillingshistorien, dvs. hvilke stillinger vedkommende har hatt, ved hvilke avdelinger, i hvilke perioder. Andel av full stilling (i % for hver periode) skal lagres, likeledes stillingsbetegnelsen og lønnstrinn.
Pasientene kan vi klassifisere i tre grupper: polikliniske pasienter, dagpasienter og innlagte pasienter. Bare siste kategori blir lagt inn og opptar en seng. For hver innleggelse skal vi registrere dato for innleggelse og utskriving, hvilke lege som var ansvarlig for innleggelsen og hvilken avdeling ved sykehuset vedkommende ble innlagt ved. Det er to typer innleggelser; akutte og foreviste. Ved akutte innleggelser er det en sykehuslege ved akuttmottaket som er ansvarlig for innleggelsen. Ved alle andre innleggelser trenger ikke legen som er ansvarlig være ansatt ved sykehuset, det vil som regel være vedkommendes fastlege. Ved foreviste innleggelser skal det også registreres hvor lenge pasienten har stått på venteliste (for senere å kunne sjekke om sykehuset innfrir evt. ventelistegaranti).
For en poliklinisk pasient lagrer vi hvilken lege (sykehuslege) som har behandlet vedkommende. For dagpasienter registreres det hvilken avdeling som har ansvaret for pasienten. Også for dagpasienter er det en lege som er ansvarlig for at vedkommende ble tatt inn til behandling. Det er det ikke for polikliniske pasienter.
Til alle pasienter kan det være koplet en liste over pårørende (0 til flere, men alltid et lite antall).
Ansatte kan ha barn i en av sykehusets barnehager (alle barnehagene kan betraktes som en avdeling, hver enkelt barnehage kan betraktes som en underavdeling). Registrer barnets navn og navn på den (de) ansatte foreldre. For hvert barn skal en registrere periodene barnet har gått i de forskjellige barnehagene.
Tegn en EER-modell ut fra teksten over.
Det vil si at dere må bestemme hva som skal være entiteter og hvilke relasjoner (relationships) mellom dem som er nødvendig. Videre må dere bestemme hvilke attributter som skal kobles til entitetene og relasjonene. Bruk EER-modellen (kap. 3 og 21) slik at dere også får med spesialisering/generalisering og kategorier i modellen. Påfør kardinalitetene i relasjonene.
Forklar dine forutsetninger og tolkninger der det er nødvendig.
Tips: EER-diagrammer kan fort bli store og uoversiktlige, så det er lov å tegne for hånd på et stort ark (og det er lurt å kladde litt før dere setter igang).
Oversett EER-diagrammet til tabeller (relasjoner) i relasjonsmodellen. Velg en primærnøkkel (primary key) for hver tabell, og få med alle fremmednøkler (foreign key).
Skriv opp tabellene på følgende form (eks.):
PERSON ( personnr, fornavn, etternavn,…, postnr*);
POSTSTED(postnr, poststed);
, hvor understrekene attributter er valgte primærnøkler, og '*' indikerer fremmednøkler.
Merk: Dere trenger ikke å få med datatypene (domenene) til attributtene. Det viktige i denne oppgaven er hvilke tabeller dere lager og nøklene i hver tabell.