Startup code for first assignment in Databaskonstruktion
Find a file
2026-09-16 19:10:40 +02:00
Aliens3_edited.svg Updated readme with ER_diagram 2026-09-08 13:07:45 +02:00
database.sql Created 3 trigger/procedures 2026-09-16 18:40:54 +02:00
ER_diagram.png Updated readme with ER_diagram 2026-09-08 13:07:45 +02:00
LICENSE Initial commit 2026-08-31 15:21:23 +00:00
README.md Update README.md 2026-09-16 19:10:40 +02:00

Databaskonstruktion-Assignment-1-Startup

Overview

Detta projekt är en del av uppgiften i kursen Databaskonstruktion. Applikationen bygger på kravspecifikation för PUCKO-systemet.

Min tilldelat agenttyp är C

Tilldelat del

Agenttyp: Fältagent

Min del av applikationen fokuserar på den information som en fältagent behöver för att arbeta med tilldelade operationer, incidenter och identifering av aliens och rymdskepp.

Konceptuell Databasdesign

valda entiteter

Jag har valt : Agent/Fält, Operation, hjälpmedel, skepp, alien och incident. Jag valde de eftersom det är mest relevanta för en fältagent.

ER-diagram

!ER-diagram

Krav

Krav beskriver vilka regler och villkor varje entitet och relation i databasen måste följa för att systemet ska fungera korrekt och enligt kravspecifikationen.

Agent

  • En agent identifieras unikt av kombinationen namn och nummer.
  • En agent kan ha en levnadsfilosofi som lagras som en kommentar.
  • En agents lön skall lagras.
  • Lön ska vara mindre än 25000.
  • Default lön är 13000.
  • En agents ursprungliga namn skall lagras.
  • Nummer kan inte vara 0 eller > 99.

Fältagent

  • En fältagent kan vara tilldelad en eller flera operationer.
  • En operation kan tilldelas flera fältagenter.
  • En fältagent kan ha flera olika favorithjälpmedel.
  • En fältagent kan ha flera olika kompetenser.
  • Antalet genomförda operationer skall kunna beräknas.
  • Antalet lyckade operationer skall kunna beräknas.

Alien

  • Varje rymdvarelse skall ha en farlighetsnivå.
  • En alien kan ha flera olika kännetecken.
  • En alien identifieras av en unik ID-kod.
  • ID-kod är lika PNR i Svergie.
  • Om ingen farlighetsgrad anges skall värdet automatiskt sättas till "Neutral".

Operation

  • En operation identifieras av kodnamnstyp och startdatum tillsammans med incidenten.
  • Slutdatum måste vara senare än startdatum.
  • En operation får inte vara kortare än en dag.
  • En operations success rate skall vara 0 eller 1.

Incident

  • En incident kan identifieras av antingen sitt unika namn eller sitt unika nummer.
  • För en incident skall platsen där den inträffade lagras.

Hjälpmedel

  • Ett antal hjälpmedel kan tilldelas till en operation.
  • Ett hjälpmedel identifieras av sitt namn och nummer tillsammans.
  • Ett hjälpmedel skall tas bort från databasen om det går sönder eller försvinner under en operation.

Skepp

  • Ett skepp identifieras unikt av sitt ID-nummer.
  • Skepp som registreras tilldelas automatiskt ett ID-nummer.
  • Ett skepp kan ha flera kännetecken.
  • Ett skepp måste ha minst en sittplats.
  • Ett skepp får inte ha fler än 5000 sittplatser.

Relationer

Incident(Namn, Nr, plats)

Operation(kodnmnt, stdatum,IncidentNamn, sldatum, SR, Kommentar)

Fältagent(Namn, Nr, lön, Unamn, kommentar)

AgentToOp(AgentNamn, AgentNr, Kodnmnt, stdtum, IncidentNamn)

AgentKompetenser(Namn, Nr, kompetens)

Hjälpmedel(Namn, Nr, Beskrivning)

AgentToHjmedel(HjlpNamn, HjlpNr, AgentNamn, AgentNr)

Alien(IDKod, Farlighet)

AlienKännetecken(IDKod, Kännetecken)

Skepp(Id, Sittplatser, Tillverkat)

SkeppKännetecken(Id, Kännetecken )

HjmedelToOp(HjlpNamn, HjlpNr, kodnmnt, stdatum)

InciSkepp(SkeppId, InciNamn)

InciAlien(SkeppId, AlientKod)

Aliens (FirstIDKod, SecondIDKod)

AlienSkepp (SkeppId, AlienIDKod)

Logisk Databasdesign

I den logiska databasdesignen omvandlades ER-diagrammet entiter och relationer till relationer med primärnycklar och främmande nycklar.
Många-till-många relationer, t.ex. mellan fältagenter och operationer (AgentToOp), (HjmedelToOp) mellan hjälpmedel och operationer samt (AlienToOp) mellan aliens och operationer. Operation identifieras med en sammansatt primärnyckel bestående av kodnamn, startdatum och incidentnamn. Främmande nycklar används i kopplingstabellerna för att bibehålla relationerna mellan exempelvis fältagenter, operationer, hjälpmedel, aliens och rymdskepp.

Fysisk Databasdesign

I den fysiska databasdesignen valdes datatyper, primärnycklar, främmande nycklar och constraints utifrån kraven i uppgiften. Incident denormaliserades genom att dess information flyttades in i Operation, vilket innebär att incidentinformation lagras tillsammans med operationen. Kodifiering användes för farlighetsgrad genom tabellen DangerLvl och för tillverkningsplanet genom TillverkningPlanet. FieldAgent delades även vertikalt i FieldAgent och FieldAgentDetails för att separera grundläggande agentinformation från mer detaljerad information som lön, ursprungligt namn och kommentar. Index skapades för att förbättra sökningar på incidenter och kopplade aliens. Rättigheter, constraints, procedurer och triggers implementerades också för att kontrollera åtkomst och automatisera vissa krav i databasen.

Trigger/Procedure design

Den första procedure skapades CALCULATESR = CalculateSuccessRate. Det används för att beräkna totalt lyckade operationer en agent har varit med. Det tar emot agentens namn och nummer och använder AgentToOp för att hitta de operationer som agenten har varit med i. Därfefter kopplas dessa till Operation och procedure räknar både det totala antalet operationer och hur många av dem som varit lyckade utifrån variablen SR.

ENDDATETRIGGER EndDateTrigger. En trigger som kollar om användaren har lagt en period till en operation på över 5 veckor. Om det är så så rätter triggeren det automatisk till en fem veckors period.