Göm menyn

732G16 Databaser: design och programmering

Projekt, del A - Design av databas

Motivering & Syfte

Det första steget när en databas ska konstrueras är att utforma en konceptuell datamodell (dvs en ER-modell) för det informationsbehov tillämpningen har.

När man har en ER-modell konverterar man den till en relationsmodell för att kunna realisera databasen. Granskning av relationsmodellen (normalisering) genomförs sedan för att verifiera att ingen redundans kommer att finnas i databasen.

Förberedelser

Läs på om ER-diagram, relationsmodellen samt normalisering (inklusive BCNF och 3NF) i kursboken (detta gås också igenom på föreläsningar och lektioner). Läs nedanstående beskrivning av databasens innehåll. Titta också på den datafil som du sedan ska använda i del B.

Vi vill undersöka om antalet högskolepoäng en student "plockar" är relaterat till hur duktiga de varit tidigare (mätt som deras medelbetyg från gymnasiet, som de antagits till universitetet på - dvs meritpoängen). Vi vill också undersöka om det varierar mellan studenter på olika program och mellan kurser som är obligatoriska respektive valbara. För att kunna göra denna analys behöver vi kunna representera studenter på något unikt sätt, deras meritpoäng (medelbetyg) samt hur många kurspoäng de "plockat". Om en student klarat en kurs med betyg G eller VG anser vi att studenten "plockat" så många poäng som kursen ger. Om en student fått U på en kurs som de gått räknas inte den kursens poäng.

För att kunna titta på skillnader mellan olika program måste vi veta vilket program studenten går. För att kunna avgöra om kursen var obligatorisk eller valbar behöver vi veta för vilka program kursen är obligatorisk och för vilka den är valbar. En kurs som är obligatorisk på ett program kan vara valbar för studenter på ett annat program.

Till din hjälp har du en datafil (se projekt del B), som innehåller rådata lagrad på ett mycket ineffektivt sätt. Det är en csv-fil (googla om du inte hört begreppet förr) och varje rad i filen innehåller följande kolumner:

  • Namnet på programmet studenten går
  • Programkod (en unik kod för varje program)
  • Studentens personnummer
  • Studentens namn
  • Studentens medelbetyg (meritpoäng)
  • Namnet på en kurs studenten gått
  • Kurskod (unik)
  • Kursens högskolepoäng
  • Om kursen var obligatorisk för studenten (1=ja, 0=nej)
  • Betyget studenten fick på kursen (U/G/VG)
Denna fil innehåller dubbellagrad data. För kurser lagras data en gång för varje student som gått kursen och för varje program lagras data om programmet (dess namn) för varje student som går där. Du kan anta att data är korrekt, dvs om det står på en rad att kursen ger ett visst antal poäng så är det samma poäng på alla rader där den kursen förekommer, och om kursen är obligatorisk för en student på ett visst program så är den det för alla andra studenter på det programmet (vi skiljer inte på olika profiler). Du kan också anta att en student bara går ett program (man kan inte byta program).

Genomförande

Utforma ett ER-diagram som visar hur den ovanstående informationen ska modelleras för att analysen ska kunna genomföras och ändå lagras på ett strukturerat och utrymmeseffektivt sätt (ingen dubbellagring). Tänk på att ER-diagramet skall visa sambandstypernas kardinalitet och deltagande samt entitetstypernas nycklar.

Konvertera sedan ER-diagramet till ett relationsschema. Relationsschemat ska använda samma namn som ER-diagrammet i den utsträckning det går och visa nycklar och främmande nycklar. Om det finns integritetsvillkor i ER-diagrammet som inte naturligt ingår i relationsschemat ska dessa skrivas ut i text.

Sedan försäkrar ni er om att det inte finns någon dubbellagring genom att undersöka om alla relationer i schemat uppfyller BCNF eller 3NF. Visa de funktionella beroendena med hjälp av pilar och motivera tydligt de normalformer som uppfylls. Om någon relation uppfyller 3NF men inte BCNF kan ni välja mellan att behålla er design eller normalisera till BCNF. Om ni väljer att stanna vid den design som inte uppfyller BCNF måste ni motivera varför.

Redovisning

Lämna in ER-diagrammet, Relationsschemat samt en redovisning av normaliseringen i en eller flera filer som har namn som innehåller ert gruppnummer i Webreg. Om ni lämnar in i tre olika filer, ge filerna namn som speglar vilken del av uppgiften de visar. Använd pdf eller jpg-format. Lämna in enligt instruktionerna på Översikts-sidan.

Tips: Ni kan använda något online-verktyg, t.ex draw.io, för att rita ER-modellen och relationsmodellen. Ni kan också rita för hand (tydligt, inte med blyerts på rutat papper) och fota av, antingen med mobil (kolla att det går att läsa) eller scanner som finns i printrarna.

Deadline

Se schemat. Observera att detta är kursens första deadline.

Övrigt

Tänk på att denna uppgift måste vara godkänd innan ni kan skapa databasen i projekt del B. Detta för att inte riskera att ni måste göra om databasen om modellerna inte godkänns.


Sidansvarig: Eva Ragnemalm
Senast uppdaterad: 2024-03-27