| database.sql | ||
| ER_diagram.png | ||
| LICENSE | ||
| README.md | ||
Overview
Jag är tilldelat till Grupp D och jag valde dessa 7 av diagramet som passar bäst för Grupp D: Agent, Gruppledare, Fältagent, Operation, Incident, Hjälpmedel och Region.
ER-modell
Relationer
Agent(Namn, Nr, Lön, Fnamn, Enamn, kommentar)
Gruppledare(AgentNamn, AgentNr)
Fältagent(AgentNamn, AgentNr, Specialkompetens)
Hjälpmedel(Namn, Nr, Beskrivning)
Region(Namn, Terräng)
Incident(Namn, Nr, Plats, RegionNamn)
Operation(Kodnamntyp, Startdatum, IncidentNamn, IncidentNr, Slutdatum, SR, Kommentar, RegionNamn, GruppledareNamn, GruppledareNr)
Fältoopera(AgentNamn, AgentNr, Kodnamntyp, Startdatum, IncidentNamn, IncidentNr)
Favoritohjälp(AgentNamn, AgentNr, HjälpmedelsNamn, HjälpmedelsNr)
Operationoshjälp(Kodnamntyp, Startdatum, IncidentNamn, IncidentNr, HjälpmedelsNamn, HjälpmedelsNr)
Kompetens (AgentNamn, AgentNr, Kompetens)
Requirements
Kraven som är relevanta för Grupp D (Gruppledare).
Agent
- En agent identifieras med namn och nummer tillsammans.
- Agentens namn ska vara en bokstav
- Agentens nummer får inte vara negativt eller högre än 99.
- Nummer 0 får bara användas för gruppledare.
- Agentens lön, ursprungliga namn och levnadsfilosofi ska sparas.
- En vanlig agent får har en lön mellan 12000 och 25000 kr.
- En gruppledare får ha en lön mellan 12000 och 35000 kr.
- Om ingen lön skrivs in ska lönen automatiskt bli 13000 kr.
Gruppledare
- En gruppledare kan leda flera operationer.
- Varje operation måste ha en gruppledare.
- Gruppledaren ska kunna tilldela fältagenter och hjälpmedel till en operation
- Gruppledaren ska kunna lägga till och ta bort resurser från en pågående operation
- Gruppledaren får skapa operationer för en incident men får inte skapa nya incidenter.
- Det ska gå att räkna hur många operationer gruppledaren har lett och hur många som lyckades.
- En gruppledare får leda högst två operationer samtidigt om de tillhör olika incidenter
- En gruppledare får leda högst fem operationer samtidigt om de tillhör samma incident.
Fältagent
- En fältagent kan delta i flera operationer.
- En operation kan ha flera fältagenter.
- Fältagentens kompetenser och viktigaste specialkompetens ska sparas.
- En fältagent kan ha flera favorithjälpmedel.
- Samma hjälpmedel kan vara favorit för flera fältagenter
- En fältagent får normalt bara arbeta med en operation åt gången.
- Om operationerna finns i samma region får fältagenten arbeta med högst tre samtidigt.
- Det ska gå att räkna hur många operationer fältagenten deltagit i och hur många som lyckades.
Operation
- En operation identifieras med kodnamnstyp, startdatum och den incident som skapade operationen.
- Operationen måste vara kopplad till en incident, en region och en gruppledare.
- En operation kan ha flera fältagenter och hjälpmedel.
- Operation slutdatum måste vara senare än startdatumet.
- En operation måste vara minst en dag lång.
- Om operationen anges vara längre än 5 veckor ska längden automatiskt ändras till 5 veckor.
- Operationens resultat ska sparas som 0 för misslyckad eller 1 för lyckad.
- Om en agent eller ett hjälpmedel blir dubbelbokat ska ett felmeddelande visas och bokningen stoppas.
Incident
- En incident kan identifieras med sitt unika namn eller sitt unika nummer.
- Platsen där incidenten inträffade ska sparas.
- En incident måste tillhöra en region.
- En incident kan leda till flera operationer.
- Det ska gå att beräkna medelvärdet av graderna för incidentens observationer.
Hjälpmedel
- Ett hjälpmedel identifieras med namn och nummer tillsammans.
- En kort beskrivning av hjälpmedlet ska sparas.
- Hjälpmedlets nummer ska vara mellan 1 och 15.
- Ett hjälpmedel får bara användas i en operation åt gången.
- Om ett hjälpmedel går sönder eller försvinner ska det tas bort tillsammans med sina kopplingar.
- Bara operationens gruppledare får ta bort hjälpmedlet
Region
- En region identifieras med sitt namn.
- Regionens huvudsakliga terräng ska sparas.
- Om ingen terräng anges ska värdet automatiskt bli blandad.
- Det ska gå att räkna hur många incidenter och operationer som tidigare funnits i regionen.
- Fältagenter som finns i operationens region ska visas först för gruppledaren.
Beskrning
Jag tillhör grupp D och arbetar med gruppledarens del av systemet. Jag har valt Agent, Gruppledare, Fältagent, Operation, Incident, Hjälpmedel och Region. Dessa delar behövs för att beskriva hur gruppledaren leder operationer och tilldelar fältagenter och hjälpmedel.
Konceptuell databasdesign
Jag började med att välja de delar av ER-diagrammet som är viktiga för gruppledarens arbete. Gruppledare och fältagent är två typer av agenter. Därför har de gemensamma uppgifter i Agent, till exempel namn, nummer och lön. En gruppledare kan leda flera operationer. Varje operation har en gruppledare och hör till en incident. Fältagenter och hjälpmedel kan delta i flera operationer vid olika tillfällen.
Logisk databasdesign
Jag gjorde om ER-modellen till relationer. Varje relation innehåller de uppgifter som ska sparas och nycklar som identifierar och kopplar ihop informationen. Agentens namn och nummer bildar tillsammans primärnyckeln. Gruppledare och Fältagent använder samma nyckel och kopplas till Agent med främmande nycklar. Agentens ursprungliga namn delas upp i förnamn och efternamn. För många-till-många-samband skapade jag kopplingstabeller. En sådan tabell visar vilka fältagenter som deltar i vilka operationer. Andra kopplingstabeller används för favorithjälpmedel och operationernas hjälpmedel. En fältagent kan ha flera kompetenser. Därför sparas kompetenserna i en egen relation. Relationslistan visar den logiska modellen före ändringarna i den fysiska designen.
Fysisk databasdesign
Jag skrev SQL-koden i database.sql. Jag använder bland annat CHAR(1) för agentens bokstav, INTEGER för nummer, DECIMAL för lön och DATE för datum. Primärnycklar identifierar raderna. Främmande nycklar kopplar ihop tabellerna. Jag använder också NOT NULL och CHECK för att begränsa vilka värden som får sparas. Jag slog samman incidentuppgifter med Operation. Därför finns incidentens namn, nummer och plats direkt i Operation. Det gör att dessa uppgifter kan hämtas tillsammans utan en JOIN mellan Incident och Operation. Samtidigt kan incidentuppgifter upprepas när en incident har flera operationer. Jag delade ut kommentarer till AgentKommentar och OperationKommentar. Detta är vertikal uppdelning eftersom vissa kolumner flyttas till egna tabeller. Jag använder kodtabeller för terräng och kompetenser. De andra tabellerna hänvisar till dessa med en kod. Jag skapade index på operationens slutdatum och fältagentens specialkompetens. De kan hjälpa vid sortering på slutdatum och sökning efter specialkompetens. Med GRANT ger jag databasanvändaren gruppledare rätt att läsa vissa tabeller och lägga till operationer och kopplingar till resurser.
Procedurer och triggers
GetGroupLeaderOperations
Proceduren hämtar operationerna för en vald gruppledare. Den tar emot gruppledarens namn och nummer och visar de operationer som personen leder.
CheckOperationLength
Enligt kravet ska en operation som anges vara längre än fem veckor automatiskt kortas till fem veckor. Triggern kontrollerar detta innan en ny operation sparas. Den ändrar slutdatumet om det ligger mer än fem veckor efter startdatumet. Triggern körs vid INSERT.
GetAverageSalary
Proceduren räknar ut medellönen för agenterna. Applikationen kan anropa den för att visa medellönen.
LoggOperation
Triggern sparar en loggrad när en ny operation läggs till. Loggen innehåller operationens uppgifter, databasanvändaren och tidpunkten. Syftet är att kunna se vad som har lagts till, av vem och när. Triggern körs efter INSERT.
