IN2090-ukesoppgaver: Uke 3
ER-modellering
Med gjevne mellomrom finner man farlige stoffer i ulike varer, enten matvarer, byggematerialer, osv. Disse må da kalles tilbake og de som er ansvarlig for produksjon eller design må kontaktes slik at feilen kan opprettes. Du er ansatt av et nytt statlig organ som skal holde styr på informasjon som kan være nyttig i en slik sammenheng, og må derfor lage en database over varer og deres ingredienser, firmaer, ansatte, osv. For å lage en robust og god database må du derfor først lage en ER-modell som fanger den relevante informasjonen om dette domene.
I ukens oppgaver skal du altså lage en ER-modell som modellerer utsagnene under. Du kan bruke Dia eller andre programmer (se semestersiden for mer info) eller tegne for hånd.
Oppgave 1 - Varer og firmaer
Du starter med å modellere varer og firmaer, og får oppgitt følgende informasjon fra domene-ekspertene:
- En vare har en unik strekkode, et navn, og ingredienser (f.eks. “salt”, “fruktose”, “E224”, osv.). Det kan være mange ingredienser per vare.
- En vare selges av et firma for en gitt pris. Én vare kan selges av mange firmaer og et firma kan potensielt selge mange varer. Firmaene vi ønsker å lagre selger minst én vare.
- Firmaer har et navn, en adresse som igjen består av postkode, gateadresse og poststed. Poststed kan utledes fra postkode. I tillegg har firmaer et unikt 8-sifret registreingsnummer.
Oppgave 2 - Avdelinger
Videre forstår du at firmaer kan være veldig store, og at det derfor ikke nytter å forsøke å kontakte et firma sentralt dersom det er noe galt med én av varene firmaet selger. Du trenger derfor å også lagre informasjon om strukturen til firmaene, og får da følgende informasjon:
- Hvert firma kan bestå av en rekke avdelinger. Hver avdeling betegnes med et navn, men dette navnet er kun unikt innen firmaet det tilhører (f.eks. kan det jo tenkes at to avdelinger fra hvert sitt firma begge heter “Avdeling for hårprodukter”). Et firma kan naturligvis inneholde mange avdelinger, men trenger ikke inneholde noen avdelinger.
- Avdelingene er ansvarlige for ulike aspekter ved en vare som firmaene produserer (f.eks. produksjon, salg eller design), og det er slik at én vare kan ha mange avdelinger som er ansvarlige for den, mens en avdeling kan være ansvarlig for mange varer. En vare trenger ikke ha noen avdeling som er ansvarlige for den, og en avdeling trenger heller ikke være ansvarlige for noen varer.
Oppgave 3 - Ansatte
Dersom det er en kritisk situasjon kan det være best å kontakte de ansatte i en avdeling direkte. Du innser derfor at du også ønsker å lagre informasjon om de ansatte i de ulike avdelingen. Du får da samlet følgende generelle informasjon etter å ha besøkt ulike avdelinger:
- Hver avdeling har ansatte, som er ansatt for en gitt periode. En avdeling kan ha mange ansatte. Videre er hver ansatt ansatt ved nøyaktig én avdeling.
- Hver ansatt har et navn, et unikt telefonnummer, en stillingstittel (slik som “produktansvarlig”, “designer”, “produksjonsmedarbeider”, osv.). De ansatte har også en ID som er unik for alle ansatte på tvers av alle avdelinger og firmaer.
- Hver avdeling har også nøyaktig én ansatt som er avdelingens leder. En ansatt kan kun være leder for avdelingen den er ansatt ved.
Løsningsforslag:
![](firma.png)