Startup code for first assignment in Databaskonstruktion
Find a file
2026-09-13 14:05:03 +02:00
database.sql Började med denormalisering merge 2026-09-13 14:05:03 +02:00
ER_diagram.png Har skrivit overviewn, infogat diagrammet och råkat göra steg 4 innan steg 3 (relationsdatamodellen) 2026-09-02 13:53:11 +02:00
LICENSE Initial commit 2026-08-31 15:21:23 +00:00
README.md Uppdatterade relationerna, en datatyp och constraints 2026-09-12 18:38:17 +02:00

Databaskonstruktion-Assignment-1-Startup - Jafiet

Overview

Applikationen ska kunna möjliggöra att agenterna: fältagenterna ska ha åtkomst till det som de är behöriga för samt att de ska kunna utföra det de är behöriga för i applikationen.

ER model

ER modell

Relations

Agent(NamnNr, Lön, Förnamn, Efternamn, Kommentar, ÄrFält, ViktSpecKomp, ÄrGruppledare)

Kompet(Kompet_Namn, NamnNr)

Hjmedel(Namn, Nr, Beskrivning, Typ, Ordningsnummer)

FavoritHjmedel(AgentNamnNr, HjmedelNamn, HjmedelNr)

Region(Namn, UppskHuvudterräng, Terräng)

Incident(Nr, Plats, TillhörandeRegion)

Operation(Kodnmnt, Stdatum, IncidentNr, Sldatum, SR, Kommentar, AnsvGruppledareNamnNr, TillhörandeRegion)

TilldeladeFält(Kodnmnt, Stdatum, IncidentNr, AgentNamnNr)

AllokeradeHjmedel(Kodnmnt, Stdatum, IncidentNr, HjmedelNamn, HjmedelNr)

Requirements

Kraven för applikationen inkluderar att användargränsnittet är användarvänlig, att det finns flera användargränsnitt för olika typer av agenter, kravspecifikationen skall utökas i det fallet att behov finns för det osv.

Agent

  • Varje agent identifieras unikt med hjälp av dess namn (namnet är endast en bokstav exempelvis K), tillsammans med en siffra exempelvis J 2.

  • Agentens levnadsfilosofi lagras som en kommentar för att kunna gå tillbaka och utvärdera hur pass bra agenten lever upp till sin levnadsfilosofi vid ett senare tillfälle.

  • Agentens lön och ursprungliga namn (inklusive separata förnamn och efternamn och ett härlett attribut som sätter samman förnamn och efternamn) skall dessutom lagras för alla agenter.

  • Vissa personer får av olika orsaker inte bli agenter. Det gäller personer som heter Leif Loket Olsson, Greger Puckowitz och Greve Dracula.

  • Agenter skall inte tilldelas löner över 25000 om de inte är gruppledare då är lönetaket 35000.

  • Ingen agent oavsett typ får tjäna mindre än 12000.

  • Om ingen lön tilldelas så skall lönen automatiskt sättas till 13000.

  • Det nummer som tilldelas en viss agent får inte vara noll om inte personen är en gruppledare, i det fallet är numret tillåtet.

  • Ingen agent får ha nummer som är mindre än noll.

  • Talet 13 är av naturliga skäl inte tillåtet som agentnamn.

  • Agentnummer över 99 är inte heller tillåtna.

  • De härledda värden som skall beräkna ett antal, exempelvis antalet genomgångna operationer för en viss agent, skall värdet “Inga operationer“ visas i applikationen.

  • Det är av vikt om användargränssnittet är mycket väl separerat mellan de olika typerna av agenter och varje typ av agent skall ha ett användargränssnitt som är mycket väl lämpat för agentens arbetsuppgifter.

  • Det kan hända att en lagring av någon typ av information eller en bokning av någon resurs misslyckas, i detta fall skall lättförstådd felinformation visas, agenten skall sedan ha en möjlighet att rätta till den felaktiga informationen innan tuppeln lagras igen.

Agent → Fältagenter

  • För att agenterna ute i fält skall kunna få tillgång till aktuell information gällande sitt uppdrag så krävs det att de har möjlighet att göra flera olika typer av sökningar i verksamhetens databas. Tanken är att agenterna skall kunna göra dessa sökningar från olika datamaskiner på olika platser i landet. Den enda möjligheten att tillåta denna typ av hantering är att ge åtkomst till sökning via WWW. Ett gränssnitt skall därför utvecklas som tillåter sökning i databasen via ett antal hemsidor på PUCKOS WWW-server.

  • En fältagent kan ha deltagit i flera olika operationer och en operation kan ha flera deltagande fältagenter.

  • En fältagent har dessutom ett antal olika favorit-hjälpmedel som även kan vara favorit-hjälpmedel till flera andra fältagenter.

  • För en fältagent skall även fältagentens kompetenser lagras, kompetensen är de arbetsuppgifter som agenten är specialtränad för, exempelvis städ-operationer eller infångande-operationer. Dessutom skall agentens viktigaste specialkompetens lagras i databasen exempelvis desarmering eller långdistansskytte.

  • Slutligen skall det gå att beräkna agentens totala antal operationer samt antalet lyckade operationer agenten deltagit i.

  • Tabellen med information om myndighetens fältagenter är det nödvändigt med ytterst snabb åtkomst eftersom arbete mot dessa tabeller sker i realtid.

  • En fältagent får inte arbeta på fler än en operation samtidigt. Undantaget är om operationerna är satta i samma region, i det fallet så får en enskild agent arbeta på upp till tre operationer samtidigt.

  • När en agent blivit tilldelad en eller flera operationer så skall det vara möjligt att göra flera olika typer av sökningar på informationen i databasen. Agenten skall lätt kunna se vilka andra fältagenter som finns med i operationsgruppen, operationens region och platsen där operationen skall genomföras samt se en lista över tilldelade hjälpmedel.

  • När en fältagent tilldelas en ny operation så skall den nya operationen automatiskt läggas i listan med pågående operationer.

  • En fältagent behöver få reda på information om den gruppledare som leder operationen han deltar i (namn).

  • Han skall kunna läsa information om alla tidigare incidenter och deras resulterande operationer.

  • En fältagent skall ha rättigheter att se vilka hjälpmedel, sorterat på namn, som tilldelats hans operation men inte vilka hjälpmedel som andra agenter har som favorithjälpmedel samt vilka hjälpmedel som tilldelats andra operationer.

  • Fältagenten skall inte ha tillgång till information om andra agenter än de fältagenter som kopplats in på operationer han själv deltagit eller deltager i.

Agent → Gruppledare

  • För gruppledare skall det vara möjligt att se hur många av de operationer som gruppledaren styrt som slutade med lycklig utgång, antalet operationer som gruppledaren genomfört samt procentandelen lyckade operationer, dessa operationer ska vara sorterade på slutdatum.

  • En gruppledare kan vara ledare för flera operationer men en operation kan endast ha en gruppledare.

  • En gruppledare får leda högst två operationer samtidigt om de inte tillhör samma incident.

  • En gruppledare får leda upp till fem operationer samtidigt om de alla tillhör samma incident.

  • Gruppledaren skall kunna tilldela agenter till en operation.

  • Operationens namn, datum och plats skall visas tydligt i gränssnittet.

  • En sorterad lista med agenter som är sorterad på namn och nummer skall visas på skärmen.

  • Det skall vara möjligt att för varje agent se agentens namn, nummer, procent av lyckade oeprationer samt agentens specialitet och specialkompetens.

  • Agenter som befinner sig i operationens region skall ha förtur i användargränssnittet före agenter som befinner sig i andra regioner oavsett vilken uppklarningsprocent agenten i fråga har.

  • När en agent som valts till operationen markeras så visas en mer detaljerad information om agenten, bland annat agentens favorithjälpmedel samt namnet på de operationer han medverkat i.

  • En varning skall visas om en enskilld operation tilldelats mer än fem personer.

  • Allokering av hjälpmedel skall ske som på liknande sätt som för agenterna, en lisa över tillgängliga hjälpmedel skall visas i vilken det skall gå att välja hjälpmedel, när ett visst hjälpmedel är markerat så skall detaljerad information om hjälpmedlet visas.

  • När bokningen av fältagenter och hjälpmedel är färdig så skall gruppledaren trycka på en knapp, om alla bokningarna går bra så skall fönstret stängas, annars skall felmeddelande visas och de felbokade resurserna skall markeras. Proceduren skall genomgås tills ingen resurs är dubbelbokad.

  • Det bör finnas en lista över pågående operationer och det skall vara möjligt att tilldela mera resurser, eller ta bort tilldelade resurser samt att ändra slutdatumet för operationen.

  • När en gruppledare tilldelas ett ny operation skall detta automatiskt visas när gruppledaren startar sin applikation eller direkt när händelsen inträffar.

  • Slutligen skall det vara möjligt för gruppledaren att skapa nya operationer för den tilldelade incidenten.

  • Gruppledaren har rättigheter att läsa all information i alla tabeller utom i tabellerna med undanflykter och personer samt information om andra gruppledare annat än deras namn och härledda attribut.

  • Gruppledaren har rättigheter att skapa nya operationer för en viss incident samt att tilldela fältagenter och hjälpmedel till operationer.

  • Gruppledaren har inte rättigheter att skapa nya incidenter.

Hjälpmedel

  • Till en viss operation kan ett antal olika hjälpmedel tilldelas. Varje hjälpmedel identifieras av dess namn samt nummer tillsammans. Exempelvis bil, 1 eller apelsinskalare, 4.

  • Slutligen lagras en mycket kortfattad beskrivning om hjälpmedlet bestående av ett par ord.

  • Om ett visst hjälpmedel går sönder eller försvinner under en operation så skall det tas bort ur databasen. Endast gruppledaren för operationen får ta bort de hjälpmedel som använts för en viss operation.

  • När hjälpmedlet tas bort skall även motsvarande kopplingar till fältagenter och operationer tas bort.

  • Samma hjälpmedel får inte tilldelas flera olika operationer samtidigt.

  • För alla hjälpmedel av en viss typ så skall hjälpmedlets ordngingsnummer anges.

  • Ordningsnummer som är högre än femton eller mindre än ett skall anses som felaktigt inskrivna.

Operation

  • Varje operation identifieras av dess kodnamntyp samt operationens startdatum tillsammans med incidenten som genererade operationen.

  • Kodnamntypen anger både operationens kodnamn samt dess typ, exempelvis uppstädningsoperation: Gregers Bodega eller Insamlingsoperation: lämmeltåg.

  • Operationen har även en frivillig kommentar som bör fyllas i där agenterna specificerar viktiga detaljer om operationen som är utöver den information som lagras i operationens förbestämda fält.

  • Det är tillåtet för två olika operationer för samma incident på olika datum att ha samma kodnamn och typ.

  • En operation måste ledas av en gruppledare och en gruppledare kan leda flera olika operationer.

  • Till en operation kan ett flertal olika hjälpmedel allokeras.

  • För varje avslutad operation lagras dessutom operationens slutdatum samt operationens success rate.

  • Slutligen så skall operationens fältagenter tilldelas.

  • För att bokning av olika agenter och hjälpmedel skall fungera så är det nödvändigt att operationens slutdatum anges, slutdatumet kan senare ändras för att passa det verkliga slutdatumet.

  • För operationer så måste alltid slutdatumet för operationen vara senare än startdatumet.

  • En operation får inte vara kortare än en dag.

  • Om skillnaden mellan en operations startdatum och slutdatum är större än fem veckor så antas slutdatumet vara felinmatat, längden till operationen skall då automatiskt sättas till fem veckor.

  • När gruppledaren (gruppledaren är den enda som har rättigheter till detta) ändrar en operations längd genom att flytta slutdatumet så skall alla de regler som är kopplade till operationen omevalueras (bokning av agenter, hjälpmedel och gruppledare bland annat). Om förflyttningen exempelvis resulterar i att en agent dubbelbokas så returneras ett felmeddelande och förändringen avbryts.

  • De attibut som anges som “success rate” skall lagras i form av ett heltal som är ett om operationen lyckades och noll om operationen misslyckades. Inga andra värden är tillåtna.

Incident

  • En incidient kan identifieras antingen av dess unika namn eller dess unika nummer.

  • En incident identifieras av dess unika nummer

  • För incidenten lagras dessutom platsen som den inträffade på.

  • Dessutom skall det gå att beräkna ett medelvärde på incidentens alla observationers grad.

  • En incident måste inträffa i någon region.

  • En incident kan dessutom ha en eller flera operationer kopplade till sig.

Region

  • En region identifieras unikt av dess namn.

  • För en region lagras dessutom en uppskattning av regionens huvudterräng, exempelvis stadsterräng, berg eller skog.

  • Dessutom skall det gå att härleda regionens antal tidigare incidenter och operationer för att kunna se om regionen är överrepresenterad.

  • Det finns regioner som under en viss tidsrymd är speciellt hemliga, dessa regioner skall temporärt kunna tas bort ur databasen för att senare kunna sättas in igen.

  • Eftersom det dock är nödvändigt att incidenter och operationer är kopplade till regioner skall en specifik region som heter “hemligstämplat“ skapas om den inte redan existerar och sedan kopplas till de påverkade operationerna och incidenterna.

  • Alla regioner måste ha någon typ av terräng lagrad. Om inget värde tilldelas så skall det automatiskt sättas till “blandad”.

Antagande

Agent

  • Jag har kombinerat nycklarna "namn" och nr" i en enda nyckel eftersom det blir då lättare att hantera begränsningar kring vad den nyckeln kan vara

  • Ursprungliga namn (unamn) ska vara en härlett attribut som består av attributena förnamn och efternamn

Hjälpmedel

  • Attributet "typ" ska läggas eftersom det anses nodvändigt att ha en sådan attribut för att kunna lägga till ordningsnummer attributet på hjälpmedeln som ska ha den (dvs de av en viss typ)

Incident

  • Incident identifieras endast av sitt unika nummer eftersom detta är lättare för systemet att hantera samt att det är komplicerat om en entitet kan identifieras med antingen en eller en annan nyckel (finskriv)