Skip to content

LisaYllander92/data-modeling-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Labb - Data Modellering

Introduktion

Uppgiften i denna labb var att skapa en databas för den fiktiva yrkeshögskolan YrkesCo utifrån en kravspecifikation som underlag. Målet var att ersätta deras nuvarande manuella hantering i Excel med en robust, centraliserad och skalbar SQL-databas.

För mer information om labben:
Labb_beskrivning (PDF)

Video-pitch

Video presentation

Presentation:
Labb_presentation (PDF)

Arbetsprocess

1. Datamodellering

Först gjorde jag själva datamodelleringen i form av ett ERD (Entity Relationship Diagram). Detta innebar att jag analyserade kravspecifikationen för att identifiera verksamhetens viktigaste byggstenar (entiteter) och hur de hänger ihop (relationer), vilket resulterade i en konceptuell modell.
Därefter utvecklade jag den logiska modellen. Här definierade jag specifika attribut för varje tabell samt datatyper för att säkerställa att strukturen uppfyller kraven för 3NF (Tredje normalformen). Slutligen översatte jag den logiska designen till en fysisk modell i dbdiagram, vilket lade grunden för den faktiska SQL-implementeringen.

Konseptuell modell

Konceptuell Modell

Logisk modell

Konceptuell Modell

3NF - Third Normal Form

  • 1NF – Databasen uppfyller 1NF genom att eliminera flervärdesattribut och upprepade grupper. Varje entitet har en tydlig definierad primärnyckel (PK) och samtliga attribut en enhetlig datatyp
  • 2NF – Databasen uppfyller 2NF genom att inga andra attribut förekommer i tabellen ProgramInnehåll som har två primärnycklar, en så kallad sammansatt nyckel
  • 3NF – Databasen uppfyller 3NF genom att alla "non-prime" attribut är direkt och uteslutande beroende av primärnyckeln

Fysisk modell

Konceptuell Modell

2. Implementering med Docker Compose

Efter modelleringen översatte jag min design till SQL-kod och körde den i en PostgreSQL-container via Docker. För att hantera konfigurationen skapade jag en docker-compose.yml-fil och en .env-fil för säker hantering av miljövariabler. För att skapa en ny container och köra i Docker:

Guide: Starta och anslut till databasen

  1. Kolla om någon container är igång/"helthcheck":
docker ps
  1. Starta containern (skapa image, volym och nätverk):
docker compose up -d
  1. Anslut direkt till PostgreSQL i containern:
docker exec -it yrkco psql -U yrkesco -d yrkco_db
  1. Lägg till tabeller (tables):
\i sql/ddl_create_table.sql
  1. Lägg till ädringar (ALTER table):
\i sql/ddl_alter_table.sql
  1. Lägg till data (VALUES):
\i sql/dml_insert_data.sql
  1. Stänga ned containern & volym:
docker compose down -v

3. Verifiering & Validering

För att säkerställa att databasen uppfyller kraven har jag genomfört följande tester:

  • Constraints: Verifierat att felaktig data (t.ex. ogiltiga betyg eller felaktiga e-postformat) stoppas vid inmatning.
  • Logisk integritet (XOR): Testat hybridmodellen för utbildare genom att försöka registrera en person som både konsult och anställd samtidigt. Systemet blockerar detta för att förhindra administrativa dubbletter
  • Analys: Skapat JOIN-frågor som hämtar ut meningsfull data, exempelvis procentandelen studenter med LIA-plats per anläggning.

Hjälp och Källor

ERD

Setup's & Docker-compose

3NF

Struktur

Övrigt

  • Jag har även haft stor nytta av anteckningar från lektioner och tidgare arbeten med Regular Expression och SQL-queries.
  • Jag har använt LLM för att generera fejk data (VALUES) och som stöd/bollplank i vissa moment där jag inte lyckats hitta svaret (eller problemet) på egen hand.

About

Relational database design (3NF) and SQL implementation for a vocational school.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors