Göm menyn

Databaser - design och programmering

Projektbeskrivning

Bakgrund

Detta projekt används för att öva att modellera, representera och skapa en databas samt koppla den till en serie webbsidor med formulär och andra finesser. Målet är att skapa en nätplats som ger tips på presenter, Presenttipset.com.

Då projektet är ganska omfattande så har det delats in i tre delar (A, B och C. Del B och C har sista inlämningsdagar, men det är upp till er att disponera er tid så att ni hinner redovisa senast då. Totalt beräknas att ni behöver lägga cirka 50 timmar (per person) på själva projektet. Tänk på att bokad, handledd labbtid inte täcker hela den tid ni behöver lägga på projektet, planera för att utnyttja handledd tid effektivt. Får ni problem som ni inte kommer vidare med kan ni skicka epost till handledaren.

Det finns ingen speciell kursbok för HTML- och PHP-delarna av kursen, det du behöver för att klara av projektet kan du läsa dig till på de sidor som finns länkade från litteraturfliken, eller hitta egna resurser på webben eller i tryckt form. Det finns också ett antal övningar som är nära förbundna med projektet här.Inför varje labbpass bör du dessutom i förväg läsa igenom relevanta delar av projektbeskrivningen för presenttipset.com. Det är onödigt att slösa bort handledd tid med att läsa instruktionerna.

Affärsidé för presenttipset.com

Webbplatsen presenttipset.com har som affärsidé att erbjuda företag som säljer produkter via butiker och Internet en webbplats där de kan visa upp sina produkter. Det unika med webbplatsen presenttipset.com är sökfunktionen där användaren istället för att mata in produktens egenskaper söker på egenskaper hos mottagaren av din present samt orsak för att ge presenten.

Projektets omfattning

Projektet omfattar att skapa en webbplats för presenttipset.com. Detta innefattar design och implementation av webbplatsen, inklusive databas samt den underliggande programmeringen.

Projektet delas in i tre delar: Del A är design av webbplatsen, Del B är design av databasen, Del C är implementation i PHP/xhtml. Delprojekten B och C är examinationsmoment, där B måste vara godkänt innan C får påbörjas. För mer information se fliken examination.

Del A

Läs igenom kravspecifikationen för hela projektet (nedan) och skissa lösningsförslag. Identifiera funktionskrav och datakrav. Skissa (med papper och penna) alla webbsidor som behövs.

Dels ska denna lösningsskiss visa den valda grafiska profilen (använda stiltyper samt ev. logotyp, vilken känsla ska sidorna inge?) och dels generell layout på de viktigaste sidorna. Webbsidorna ska visa hur produkterna kommer presenteras på webbplatsen och hur sökningen kommer att se ut för användaren. Sidornas utseende skissas på papper och sekvensen av sidor beskrivs.

Del B

Gör ett ER-diagram enligt datakraven från Del A. Konvertera det till ett relationsschema enligt kokboken. Normalisera till 3NF eller BCNF (motivera ditt val). ER-diagram och normaliserat relationsschema lämnas in för bedömning. Deadline, se examinationssidan.

Tänk noga efter vilka entitetstyper och sambandstyper ni behöver för att kunna göra de sökningar ni vill och vilken information ni behöver lagra i databasen. Fundera speciellt över hur ni vill karaktärisera mottagare (inte för komplext).
Passa på att diskutera frågor kring ER-modellen på lektionstid.

Tips: Läs kapitel 2-6 och 11.

Del C

Implementera din lösning enligt kraven nedan. Börja med att skriva den kod och skapa de webbsidor som hör till administratörsgränssnittet. Fyll på databasen med 30 stycken presenttips. Implementera sedan sökfunktionen och därefter övriga sidor.

Tips: Dela upp websidornas funktionalitet i mindre delar och implementera en i taget (det är enklare att felsöka om man inte har flera ställen att leta på).

Redovisning av projektet

Projektet demonstreras för handledare senast vid det tillfälle som anges under examination. Inlämning av väl kommenterad programkod (all programkod) samt ER-och relationsschema (som ska vara godkända i förväg, se del B ovan) sker till handledaren senast det datum som anges under examination.

Krav på webbplatsen Presenttipset.com

Följande krav är tänkta att vara så tydliga som möjligt utan att tvinga alla implementationer att bli identiskt lika. Är något oklart, se till att be om en förklaring i början av projektet.
Utseende generellt

Webbplatsens målgrupp är alla de som har behov av ett presenttips, alltså en väldigt bred målgrupp. Den behöver därför ha ett enkelt men tilltalande utseende. Det är särskilt viktigt att startsidan är trevlig och tydlig.

  • En enhetlig design där det syns att alla sidor hör ihop. Notera att denna kod inte ska skrivas en gång per sida, utan på ett ställe och sedan inkluderas på varje sida.
  • Korrekt användande av XHTML+CSS för att skapa designen.
  • Alla sidor ska använda en och samma CSS-fil. Denna ska definiera färger, teckenstorlekar och liknande. Övrig layout/utseende ska också ske i CSS-filen, men är inte ett krav.
  • Både XHTML och CSS ska vara korrekt skriven och klara validering på http://validator.w3.org/ som XHTML 1.0 Transitional respektive http://jigsaw.w3.org/css-validator/ för CSS. (Detta innebär att frames inte får användas.)
Databas

För att få en mer dynamisk webbsida används en databas för att lagra och strukturera upp all data. Exakt hur databasen konstrueras beror på hur man vill att webbsidan ska fungera, men det finns några mer generella krav att hålla i åtanke, dessa presenteras här.

  • Databasen måste ha minst sex tabeller. (De flesta kommer att behöva fler)
  • Urvalskriterierna (exempelvis mottagarens kön, mottagarens ålder och vilket tillfälle presenten är avsedd att passa till) får vara fasta, men data som kan tänkas komma att ändras, som kriteriernas möjliga värden/intervall måste hämtas ur databasen och kunna ändras. (Not. att MySQL inte implementerar Semantiska integritetsvillkor, så detta måste lösas på något annat sätt.)
Startsida
Startsidan ska tydligt länka vidare besökaren till de sidor denne kan antas vara intresserad av, men kan även erbjuda användaren att göra saker direkt på startsidan. Exempelvis att söka presenter. Eventuellt kan förstasidan kompletteras med "senaste tipset", "populära presenter" eller annan (sponsrad?) visning av presenttips utan sökning.
  • Startsidan ska länka till alla dina andra sidor.
  • Startsidan ska låta användaren söka presenter
  • Visa senast inlagda tips (om du vill)
Söka och visa presenttips

En besökare på presenttipset.com ska från första sidan ha möjlighet att fylla i ett sökformulär och söka efter passande tips. Utsökta presenttips presenteras i en träfflista med bara de viktigaste egenskaperna och en länk till en sida där all information för en produkt visas.

Det ingår i uppgiften att ta fram lämpliga sök-kriterier (minst 3 men överdriv inte).Tänk på att vissa presenter kan tänkas passa flera olika situationer och typer av mottagare (t.ex. kan en bukett blommor passa flera olika tillfällen och personer) medan andra presenter bara passar någon enstaka kombination av tillfälle och mottagare (snuttefilt med julmotiv passar bara som julklapp till barn).

  • För den fullständiga beskrivningen av en present krävs minst följande uppgifter:
    • Namn på presenten
    • Bild på presenten. (Ni väljer om ni vill lagra bildens adress (URL) eller själva bilden i databasen. Att lagra bilden i databasen kräver lite mer arbete men har sina fördelar.)
    • För varje försäljningsställe: namn, webbadress, ort och pris
    • Beskrivande text om presenten
    • Recensioner av denna present (se nedan).
Recensera presenter
Till varje present på presenttipset.com ska det finns möjlighet för besökarna att lämna en recension av presenten. Recensionerna ska visas på den sidan där alla uppgifter om presenttipsen visas. Recensionen ska bestå av
  • rubrik
  • recensionen
  • namn och e-post till den som skrivit recensionen
  • Betyg på presenten som recenseras
Lämna förslag på presenter

Besökarna på webbplatsen ska kunna ge tips på bra presenter genom en webbsida där de kan fylla i presenttips.

  • Presenttipsen ska sparas i en separat tabell av samma format som de vanliga presenttipsen. Dessa ska kunna granskas och godkännas/tas bort av administratören (per tips, inte ta bort/godkänna alla).
  • Uppgifterna som ska kunna lämnas i formuläret är följande:
    • rubrik
    • text
    • försäljningsställe (*)
    • försäljningsställets webbsida (*)
    • vem den är lämplig för och andra kategorier (*)
    • avsändarens namn
    • avsändarens e-post
    De delar som är markerade med (*) är lite kluriga att lägga in i databasen (ser du varför?). Att lägga in dessa delar i databasen är därför inte obligatoriskt, men de ska finnas med i formuläret.
  • När en besökare lämnat ett tips på en present ska en webbsida med ett tack och avsändarens namn visas.
Administrativt gränssnitt

För att de som ansvarar för webbplatsen ska kunna underhålla databasen t ex. lägga till, radera och redigera poster krävs ett administrativt gränssnitt.

  • Det skall via gränssnittet vara möjligt att lägga till, radera och redigera ett presenttips och ett försäljningsställe (all data som är lagrad om dem).
  • För pris och kategorier behöver det inte finns någon funktion för att redigera, det behöver bara vara möjligt att lägga till och radera.
  • Man ska kunna se en lista över samt lägga till och ta bort möjliga alternativ för de olika sök-kriterierna.
  • Man ska kunna se en lista över de nya tips som kommit in (de man fått ett mail om) och genom en enkel knapptryckning välja om de skall läggas till i databasen eller om filen ska tas bort utan att läggas till.

Sidansvarig: Eva L. Ragnemalm
Senast uppdaterad: 2011-12-20