Göm menyn

729G28 Webbprogrammering och databaser

Projekt del A


Innehåll

Syfte (översikt)

Syftet med denna övning är att utifrån en specifikation och befintlig data designa en databas som kan representera den information som behövs på så lite utrymme som möjligt utan att förlora funktionalitet. Denna databas ska sedan användas i resten av projektet.

Ni ska först rita ett ER-diagram för databasen och sedan konvertera det till ett relationsschema och till slut undersöka om er databas har onödig redundans genom att se till att den uppfyller minst 3NF.

Observera att del A (åtminstone ert ER-diagram och relationsschema) måste vara godkända innan ni går vidare till del B. Annars riskerar ni att behöva börja om på del B, ifall ER-diagram eller relationsschema måste ändras.

Instruktioner/Förberedelser

Ni har fått i uppdrag att ta över ett påbörjat projekt där man vill skapa en databas som ska hantera information om amerikansk fotboll (National Football League). Databasen ska innehålla data omNFL: spelare, lag och tränare (coacher), som tidigare lagrades i tre stora filer som hanterades enskilt. Nu vill man lägga upp en riktig relationsdatabas och presentera informationen interaktivt på webben. Till er hjälp har ni de gamla datafilerna (NFL_files.zip) som innehåller all data som man var intresserad av. Nedan följer en kravspecifikation:

Datakrav: Man vill kunna lista alla fotbollslag som finns i databasen och se information om lagen. Man vill kunna kolla vilka spelare som för närvarande ingår i lagen samt vem/vilka som tränar det. Den tidigare programmeraren klarade bara att lagra en tränare (coach) per lag, men i framtiden vill man kunna hantera lag med flera tränare, då tränare ofta är specialiserade. Man vill också kunna se all data som finns om tränare och spelare.

Det finns en massa data om spelarna, coacherna och lagen i de gamla filerna, t.ex. spelarnas längd och vikt, vilket lag de debuterade i, vilka lag de spelat i tidigare, var coacherna fick sin träning mm. All denna information vill man kunna presentera i det nya systemet men man vill inte lagra onödig information. Ni behöver undersöka datafilerna för att ta reda på exakt vilken data som finns och hur den är representerad.

Kolumnerna i datafilerna innehåller oftast ett värde per rad (per spelare, coach eller lag), men kan ibland ha flera värden (tips: flera värden anges alltid på formen "{xxx|yyyy|zzzz}"). Det är heller inte säkert att alla kolumner har värden för alla spelare/lag/coacher, för ibland känner man inte till informationen.

Funktionskrav: Listan med lag ska visas i en tabell och kunna sorteras på namn, ägare eller datum genom att man klickar i kolumnrubriken. Man ska kunna klicka på lagnamnen i tabellen. När man klickar på ett lag ska man få upp den data som finns om laget samt en lista över spelarna i laget, och också en lista över lagets coacher. Man ska kunna klicka på spelare och coacher för att få upp mer information om dem på en ny sida.

När man klickat på en spelare eller coach ska man få upp all information vi har om dem. Denna sida ska inkludera t.ex. lag som spelaren tidigare spelat i och colleges som coacher tränats på.

Senare i arbetet tillkommer krav som finns beskrivna under de andra delarna. Bland annat finns en hel del säkerhetsaspekter att hantera när man lägger upp databaser som är åtkomliga på nätet och det är inte ovanligt att kunden kommer med nya krav halvvägs genom ett projekt.

Uppgifter

Notera: uppgift 2 och 3 nedan innebär visst ritande, ni kan använda ritprogram, t.ex. draw.io eller rita för hand. Om ni ritar för hand kan ni scanna eller fota av bilderna för att kunna lämna in men se i så fall till att ljuset är bra så att bilderna blir tydliga.

  1. Undersök datafilerna (se ovan) för att se vilken data som finns representerad om spelare, lag och coacher. Undersök vilka kolumner som kan ha flera värden per cell eller där data kan saknas. I dagsläget finns alltså bara en coach per lag men man vill kunna representera flera i framtiden.
  2. Rita ett ER-diagram för databasen. Tänk på att innehållet i en databas bara kan motbevisa antaganden om databasens schema, inte bevisa dem. Markera lämpliga nycklar (med understrykning) för entitetstyperna samt kardinalitet och deltagande (med siffror respektive streck enligt föreläsningen) för sambandstyperna. Använd inte EER.
  3. Konvertera ER-diagrammet till ett relationsschema. Markera lämpliga primärnycklar i relationerna samt främmande nycklar (med pilar).
  4. Se till att relationsschemat uppfyller åtminstone 3NF. Visa det genom att för varje relation identifiera fulla funktionella beroenden och kandidatnycklar och sedan argumentera för varför normalformerna uppfylls.

Redovisning

Lämna in följande filer i Lisam (det går också bra att göra ett zip-arkiv av filerna eller lägga ihop dem i en enda PDF. Namnge i så fall filen ProjA_gN.pdf). Byt ut N nedan mot ert gruppnummer i Webreg:

  • ER-diagrammet, med filnamn ProjA_gN_ER.jpg
  • Relationsschemat, med filnamn ProjA_gN_rel.jpg
  • Normaliseringbeskrivning, med filnamn ProjA_gN_norm.pdf
Deadline för del A framgår i TimeEdit och i Lisam.

Notera att denna del ska vara godkänd innan ni börjar med del B.


Sidansvarig: Eva Ragnemalm
Senast uppdaterad: 2023-03-28