diff --git a/ov7/eer_modell.png b/ov7/eer_modell.png new file mode 100644 index 0000000..1d62772 Binary files /dev/null and b/ov7/eer_modell.png differ diff --git a/ov7/eer_modell.puml b/ov7/eer_modell.puml new file mode 100644 index 0000000..c5cf7ee --- /dev/null +++ b/ov7/eer_modell.puml @@ -0,0 +1,101 @@ +@startuml + + +skinparam linetype ortho + +entity "Arbeidsstasjon" as arb { + arbeidsstasjon_id {PK} : number + -- + lokasjon : string +} + +entity "Kunde" as k { + kunde_id {PK} : number + -- + navn : string + adresse: string +} + +entity "Ordre" as o { + ordre_id {PK} : number + -- + kunde_id : number + rabatt : number + betalingsstatus : string + ordredato : date + leveringsdato_antatt : date + leveringsdato_faktisk : date +} + +entity "Del" as d { + del_id {PK} : number + -- + spesialstol_id: number + deltype_id : number + ferdigstilt : boolean +} + +entity "Deltype" as dt { + deltype_id {PK} : number + -- + navn : string + arbeidsstasjon_id : number + antall : number + farge : string + pris : number + beskrivelse : string +} + +entity "Stoffrull" as sr { + stoffrull_id {PK} : number + -- + deltype_id : number + meter : number +} + +entity "Standardstol" as sts { + standardstol_id {PK} : number + -- + modellnavn: string + stoltype : "kontorstol" | "konferansestoltol" + pris: number + lagerantall: number +} + +entity "Spesialstol" as sps { + spesialstol_id {PK} : number + -- + modellnavn: string + stoltype : "kontorstol" | "konferansestoltol" + pris: number +} + +entity "Bestilling" as b { + bestilling_id {PK} : number + -- + ordre_id : number + antall : number + pris : number + standardstol_id : number + spesialstol_id : number + stoffrull_id : number +} + +k ||--o{ o +o ||-|{ b + +b ||--o| sts +b ||--o| sps +note "Det er enten en spesialstol_id eller en standardstol_id, den andre er NULL" as n1 +n1 .. b + +b ||---|| sr + +sr }o--|| dt + +sps ||--|{ d +d }o--|| dt + +dt }o-|| arb + +@enduml diff --git a/ov7/losning.md b/ov7/losning.md new file mode 100644 index 0000000..c985f77 --- /dev/null +++ b/ov7/losning.md @@ -0,0 +1,85 @@ +--- +geometry: margin=30mm +author: Felix Albrigtsen +... + +# EER-modell + + ![EER-modell](eer_modell.png) + +# Relasjonsmodell + + + kunde(kunde\_id, navn, string) + + ordre(ordre\_id, kunde\_id\*, rabatt, betalingsstatus, ordredata, leveringsdato\_antatt, leveringsdato\_faktisk) + + bestilling(bestilling\_id, ordre\_id\*, antall, pris, standardstol\_id\*, spesialstol\_id\*, stoffrull\_id) + +> Merk! standardstol\_id og spesialstol\_id brukes som fremmednøkkel, men kan være NULL. + + + spesialstol(spesialstol\_id, modellnavn, stoltype, pris) + + standardstol(standardstol_id, modellnavn, stoltype, pris, lagerantall) + + del(del\_id, spesialtstol\_id\*, deltype\_id\*, ferdigstilt) + + deltype(deltype\_id, navn, arbeidsstasjon\_id\*, antall, farge, pris, beskrivelse) + + stoffrull(stoffrull\_id, deltype\_id\*, meter) + + arbeidsstasjon(arbeidsstasjon\_id, lokasjon) + + + +# Oppgave 2 - SQL + +## 2.1 Finn hvor mange (antallet) stolmodeller som finnes av hver stoltype. +```sql +SELECT COUNT(*) FROM spesialstol +UNION +SELECT COUNT(*) FROM standardstol +GROUP BY stoltype; +``` + +## 2.2 Ut fra alle registrerte ordre (bestillinger): Finn gjennomsnittlig antall bestilte stoler av hver stoltype. + +```sql +SELECT SUM(antall) FROM ( + SELECT b1.antall, sts.stoltype FROM bestilling b1 + LEFT JOIN standardstol sts + ON b.standardstol_id = sts.standardstol_id + WHERE b1.spesialstol_id IS NULL + + UNION + + SELECT b2.antall, sps.stoltype FROM bestilling b2 + LEFT JOIN spesialstol sps + ON b2.spesialstol_id = sps.spesialstol_id + WHERE b2.spesialstol_id +) + +GROUP BY stoltype; +``` + +## 2.3 Finn det totale antallet stoler som finnes i bestilling, og som enda ikke er levert kunder. Tips: Sjekk på reell leveringsdato (dvs. om ordren er effektuert) + +```sql +SELECT SUM(b.antall) AS "Bestilte stoler, ikke levert" +FROM bestilling b +LEFT JOIN ordre o +ON b.ordre_id = o.ordre_id +WHERE o.leveringsdato_faktisk IS NULL; +``` + +## 2.4 Finn ut hvor mange (antallet) av stolene i spørring 3 over som er standardstoler. + +```sql +SELECT SUM(b.antall) AS "Bestilte standardstoler, ikke levert" +FROM bestilling b +LEFT JOIN ordre o +ON b.ordre_id = o.ordre_id +WHERE o.leveringsdato_faktisk IS NULL +AND b.spesialstol_id IS NULL; +``` diff --git a/ov7/losning.pdf b/ov7/losning.pdf new file mode 100644 index 0000000..f413530 Binary files /dev/null and b/ov7/losning.pdf differ