Institutionen för Tillämpad fysik och elektronik Stefan Berglund 2013-04-05 Laboration: SQL Server
Målsättning Syftet med denna laboration är att ge grundläggande kunskap och erfarenhet i användning av SQL Server till databasdrivna applikationer. Centrala moment i laborationen är transaktionshantering och lagrade procedurer. Teori Camtasiafilmer, PowerPoint-handouts och demonstrationskod. Material SQL Server (vilken version spelar minde betydelse) och Visual Studio. Genomförande En tillfredställande lösning på samtliga uppgifter som ligger under rubriken Ordinarie uppgifter är ett måste för att bli godkänd på denna laboration. För plus krävs det dessutom att du även löser Fördjupningsuppgiften. TIPS: Läs igenom hela laborationsspecifikationen innan du sätter igång. Det du utvecklar i ett moment kan mycket väl gå att återanvända i ett annat om du är lite strategisk. Redovisning Redovisning av laboration sker individuellt. Laborationen redovisas dels genom en individuell rapport som beskriver din/er lösning, men även genom uppvisande av väl fungerande applikationer. Redovisning av applikationer sker vid en personlig redovisning under kursen. Ni bokar själva tid för denna redovisning. TIPS: Det här är en programmeringsinriktad laboration så layouten har liten betydelse. Tids nog kommer ni att få anstränga er för att göra sidor som är snygga också.
Ordinarie uppgifter Uppgiften består i att utveckla en applikation som baserar sig på ASP.NET och SQL Server Express (eller annan version av SQL Server). För godkänt genomförande av laborationen ska ni i rapporten beskriva det som markerats med fet och kursiv stil. Utveckla en enkel SQL Server-baserad webbklient Utveckla en ASP.NET-baserad applikation som ansluter till den databas som ni skapat.. a. Applikationen ska hämta och presentera data från en eller flera tabeller och presentera dessa på en webbsida. Användaren ska genom en dropplista, textruta eller annat kunna påverka vad som hämtas. b. Flytta den SQL-kod du skapat i Uppgift a till en lagrad procedur som tar emot en eller flera parametrar. Redovisa vilka skillnader du/ni får i koden mellan de olika fallen, både vad gäller SQL-kod och kod i C#. 2
Utveckla en applikation som innefattar transaktionshantering Denna uppgift är medvetet en aning löst specificerad. Vi tror att man lär sig mer om man både måste fundera över vilka situationer som kan uppkomma som kan behöva transaktionshantering, för att sedan klura ut hur man bäst löser dessa problem. a. Skapa en databas bestående av minst två relaterade tabeller. b. Utveckla en ASP.NET-applikation som under ordnade förhållanden hanterar att lägga till, ta bort och uppdatera data i flera av dessa tabeller. c. Applikationen ska inkludera transaktionshantering, vilket innebär att uppdatering av data endast sker om hela transaktionen går igenom. I annat fall ska allt i transaktionen rullas tillbaka. Belysande exempel: Ni har fått anställning som systemutvecklare på en resebyrå och ska nu bygga ett bokningssystem som ska hantera resenärsuppgifter, bokning av hotell och flyg. Systemet ska givetvis ha ett intuitivt webbgränssnitt där användaren kan boka både hotell och flygresa vid ett och samma tillvälle. Scenario: Mr X bokar passande flyg och hotell i ett webbformulär och trycker på Beställknappen. Samtidigt har Mrs Y bokat en liknande resa och snuvar i sista sekund det sista rummet på hotellet. Utan transaktionshantering skulle Mr X få sin bokning genomförd till hälften, vilket antagligen inte är helt tillfredställande. Med transaktionshantering skulle systemet rulla tillbaka och låta Mr X börja om med att hitta lämpligt flyg och hotell Beskriv hur din applikation fungerar och hur du implementerat och verifierat transaktionshanteringen. Redovisa väl valda delar av din källkod samt en skärmdump av Database diagram från SQL-server. Fördjupningsuppgift För att erhålla extrapoäng ska din laboration omfatta följande fördjupningsuppgift, läs igenom hela uppgiften innan du startar med att lösa uppgiften. Ange på rapportens framsida om fördjupningsuppgiften är utförd. Skapa en applikation som kopplar samman data från tabeller Från olika databaser Det är inte helt ovanligt att ett företag har flera databasdrivna system och att man sedan vill integrera dessa med varandra. I denna uppgift skapar ni först en personaldatabas som lagrar information omkring de anställda. Namn och ålder är ett mionimum sedan kan ni lägga efter eget önskemål lägga till data som telefonnummer, befattning, avdelningstillhörighet, månadslön mm. Som steg två ska ni skapa ett projekthanteringssystem innehållande en databas (en till databas, inte en till tabell i den tidigare utvecklade databasen!) som ska hantera information runt olika projekt. En kort beskrivning av projektet och slutdatum är ett minimum, sedan kan ni om ni vill lägga till information som budget, länkar till viktiga dokument mm. 3
För att slippa dubbellagrad data, som vanligtvis innebär merarbete och risk för osynkroniserad data så ska integrera ert nya projekthanteringssystem med tidigare utvecklad personaldatabas. I gränssnittet för projekthanteringssystemet ska man kunna visa projektinformation inklusive projektdeltagarinformation. Man ska också kunna lägga till ett nytt projekt, och när man gör detta måste man koppla minst en anställd till projektet. Servern som har hand om peronaldatabasen har en tendens att krängla så därför måste ni skapa transaktionshantering för detta (då systemet spänner över flera databaser måste transaktionshanteringen lyftas upp från databasnivå). Beställaren av projekthanteringssystemet vill också att projektdeltanarna avlägsnas automatiskt från projektet när projektet nått sitt slutdatum. Detta går i sig att lösa på olika sätt men här förväntas ni använda er av en triggers. Ni förväntas inte utveckla ett färdigt projekthanteringssystem. Det räcker att ni implementerar tillräckligt för att kunna visa att ni kopplat samman två separata databaser i en och samma applikation, samt att ni visar på fungerande transaktionshantering och trigger-fuktionalitet! 4