SQL

Vejledning løsninger
Opgaver
1 I denne opgave skal der opbygges en database: SkoleDB, der skal indeholde oplysninger om vores uddannelse (e.g. datamatiker), med dens fag, studerende og lærere.
  Der er givet følgende ER-diagram, der beskriver databasens design:
Figur 1:
ER-diagrammet for SkoleDB
semester-tabellen I forbindelse med dette design, har man gjort sig nogle overvejelser omkring semester-tabellen. Som det ses indeholder den ikke andre attributter end selve primær-nøglen, og man har derfor besluttet, at den ikke skal implementeres. Når man har brug for at skabe relationer mellem semester-numre i andre tabeller, er der ikke noget vundet ved at joine hen over en ellers tom semester-tabel. Man kunne mene at den evt. senere kunne komme til at indeholde andre oplysninger, og det derfor senere vil kræve ændringer som man kunne undgå; hvis man allerede nu indførte tabellen. Man har dog vurderet at dette næppe vil ske, så den skal som sagt ikke implementeres i databasen. Vi står derfor tilbage med de tre resterende tabeller, der skal oprettes i vores nye database: SkoleDB.
  Attributterne er i hovedsagen selvforklarende. De forskellige primær-nøgler er, pånær nr i semester-tabellen (der ikke skal implementeres), blot fortløbende numre, der skal genereres af databasen. lektioner i fag-tabellen er antallet af lektioner pr. uge for det pågældende fag.
1a Lav et script, der opretter databasen og dens tabeller, samt indsætter data for studerende, fag og lærere.
  Det kunne f.eks. være følgende data (fra foråret 2012):
  Studerende på 2. semester:
  • Simon Lyhne
  • Brian Larsen
  • Lars Stauersbøll
  • Burak Türkdonmez
  • André van Enckevort
  • Lars Jensen
  • Kasper Petersen
  • Rasmus Larsen
  • Michael Brøndum
  • Mathias Villumsen
  • Jens Olsson
  • Rasmus Nørgaard
  • Jeannie Fagerlund
  • Tatiana Popova
  Studerende på 4. semester:
  • Simon Ahle
  • Stephan Jensen
  • Martin Stampe
  • Martin Nohns
  • Claus Kølbæk
  • Sarangan Thillayampalam
  • Morten Uldum
  Fag på 2. semester (lektioner pr. uge og lærer i parantes):
  • SWD (6, awrp)
  • SWK (6, fkj)
  • CAOS (6, fkj)
  • ITO (2, ker)
  Fag på 4. semester (lektioner pr. uge og lærer i parantes):
  • SUM (6, awrp)
  • VF1 (7, fkj)
  • VF2 (7, ker)
  Visse af oplysningerne omkring antal lektioner pr. uge og fagenes lærere er simplificerede.
1b Lav SQL-sætninger der enten gør, eller besvarer, følgende:
  1. Find navnene på alle studerende på <semester nummer>.
  2. Find navnene på alle studerende der har <navn på fag>.
  3. Hvilken lærer underviser i <navn på fag>?
  4. Hvilke lærere underviser <semester nummer>?
  5. Hvilke lærere underviser <studerendes navn>?
  6. Hvor mange studerende har <navn på fag>?
  7. Hvor mange fag har <studerendes navn>?
  8. Slet et fag. Har det nogen konsekvenser for andre tabeller? Hvornår vil sletning af en række i en tabel have konsekvenser for en anden tabel?
  9. flyt et fag fra et semester til et andet.
  10. flyt alle studerende fra et semester til et andet.
  Bemærk, at du i de enkelte opgaver skal tage udgangspunkt i de oplysninger der er givet. F.eks. må du i opgave 2 ikke tage udgangspunkt i fagets id — det er fagets navn man har!