Attempt ov7, initial add

This commit is contained in:
Felix Albrigtsen 2022-11-01 10:00:17 +01:00
parent c532aa8bfc
commit 7471b157ce
4 changed files with 186 additions and 0 deletions

BIN
ov7/eer_modell.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

101
ov7/eer_modell.puml Normal file
View File

@ -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

85
ov7/losning.md Normal file
View File

@ -0,0 +1,85 @@
---
geometry: margin=30mm
author: Felix Albrigtsen
...
# EER-modell
![EER-modell](eer_modell.png)
# Relasjonsmodell
kunde(<u>kunde\_id</u>, navn, string)
ordre(<u>ordre\_id</u>, kunde\_id\*, rabatt, betalingsstatus, ordredata, leveringsdato\_antatt, leveringsdato\_faktisk)
bestilling(<u>bestilling\_id</u>, 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(<u>spesialstol\_id</u>, modellnavn, stoltype, pris)
standardstol(<u>standardstol_id</u>, modellnavn, stoltype, pris, lagerantall)
del(<u>del\_id</u>, spesialtstol\_id\*, deltype\_id\*, ferdigstilt)
deltype(<u>deltype\_id</u>, navn, arbeidsstasjon\_id\*, antall, farge, pris, beskrivelse)
stoffrull(<u>stoffrull\_id</u>, deltype\_id\*, meter)
arbeidsstasjon(<u>arbeidsstasjon\_id</u>, 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;
```

BIN
ov7/losning.pdf Normal file

Binary file not shown.