Disseny de Base de Dades - LAN Party Castellbisbal

Disseny de Base de Dades MySQL

Sistema de Gestió d'Assistència Tècnica i Tornejos - LAN Party Castellbisbal

1

Justificació: Necessitat i Relacions de Taules

El disseny de la base de dades s'ha realitzat per suportar tots els requisits del sistema de gestió d'assistència tècnica i tornejos de la LAN Party, garantint integritat, eficiència i escalabilitat.

Requisits del Projecte que Resol Cada Taula

Taula: users

Gestió d'usuaris, autenticació i control d'accés al sistema

Taula: tickets

Registre central de totes les sol·licituds d'assistència tècnica

Taula: technicians

Gestió del personal de suport, especialització i disponibilitat

Taula: zones

Organització física de l'esdeveniment i localització d'incidències

Taula: ticket_comments

Historial complet de comunicació i seguiment de cada ticket

Taula: equipment

Inventari de maquinari i gestió de recursos disponibles

Taula: games

Gestió de tornejos i jocs de la LAN Party, amb dates i estats

Taula: user_game_participations

Registre de participacions i resultats dels usuaris en cada joc

Taula: teams

Formació d'equips per a tornejos per equips (opcional)

Taula: team_members

Relació entre usuaris i equips per a tornejos col·laboratius

Esquema Conceptual de la Base de Dades

Diagrama Entitat-Relació (ER) Conceptual

users
id INT PK
username VARCHAR
email VARCHAR
role ENUM
gamer_tag VARCHAR
tickets
id INT PK
user_id INT FK
technician_id INT FK
zone_id INT FK
status ENUM
technicians
id INT PK
user_id INT FK
specialization VARCHAR
availability BOOL
zones
id INT PK
name VARCHAR
description TEXT
capacity INT
ticket_comments
id INT PK
ticket_id INT FK
user_id INT FK
content TEXT
equipment
id INT PK
zone_id INT FK
type VARCHAR
status ENUM
games
id INT PK
name VARCHAR
game_type ENUM
status ENUM
user_game_participations
id INT PK
user_id INT FK
game_id INT FK
team_id INT FK
score INT
position INT
teams
id INT PK
game_id INT FK
captain_id INT FK
name VARCHAR
team_members
id INT PK
team_id INT FK
user_id INT FK
role VARCHAR
Clau Primària (PK)
Clau Forana (FK)
Relació 1:N
Noves Taules (Tornejos)

Justificació de Relacions entre Taules

Relació Tipus Cardinalitat Justificació de Negoci
users → tickets 1:N 1 usuari → múltiples tickets Un usuari pot crear múltiples sol·licituds
technicians → tickets 1:N 1 tècnic → múltiples tickets Un tècnic pot atendre múltiples incidències
zones → tickets 1:N 1 zona → múltiples tickets Una zona pot tenir múltiples incidències
tickets → ticket_comments 1:N 1 ticket → múltiples comentaris Seguiment detallat de cada incidència
zones → equipment 1:N 1 zona → múltiples equips Localització física dels recursos
users → technicians 1:1 1 usuari → 0..1 tècnic Un tècnic és un usuari amb permisos especials
users → user_game_participations 1:N 1 usuari → múltiples participacions Un usuari pot participar en múltiples tornejos
games → user_game_participations 1:N 1 joc → múltiples participacions Un torneig pot tenir múltiples participants
games → teams 1:N 1 joc → múltiples equips Un torneig pot tenir múltiples equips participants
teams → team_members 1:N 1 equip → múltiples membres Un equip està format per diversos jugadors

Casos d'Ús Resolts pel Disseny de BBDD

Gestió d'Assistència
  • Creació i seguiment de tickets
  • Assignació automàtica a tècnics
  • Priorització per urgència
  • Historial complet per usuari
Administració i Anàlisi
  • Estadístiques de rendiment
  • Control de recursos per zona
  • Informes d'activitat tècnics
  • Anàlisi de tendències d'errors
Gestió de Tornejos i Jocs
  • Registre de participacions en jocs
  • Resultats i estadístiques per jugador
  • Formació d'equips per tornejos
  • Classificacions i rànquings
  • Historial de participacions per usuari
2

Implementació: Disseny Complet i Normalització

Disseny detallat de totes les taules amb camps, tipus de dades, relacions, restriccions i normalització fins a la Tercera Forma Normal (3FN).

Normalització de la Base de Dades

1FN - Primera Forma Normal

Eliminació de Grups Repetits

  • Valors atòmics en cada camp
  • Sense llistes o conjunts
  • Identificador únic per fila
  • Ex: Separar "equipament" en taula independent
2FN - Segona Forma Normal

Eliminació de Dependències Parcials

  • Tots els camps depenen de la clau completa
  • Descomposició de taules amb claus compostes
  • Ex: ticket_id + user_id → comment_text
  • Creació de taules de relacions
3FN - Tercera Forma Normal

Eliminació de Dependències Transitives

  • Cap camp no clau depèn d'un altre camp no clau
  • Ex: technician_id → specialization (taula separada)
  • Evitar redundància de dades
  • Optimització d'emmagatzematge

Taula: users (Usuaris del Sistema) - AMPLIADA

users
Emmagatzema informació de tots els usuaris del sistema (assistents, tècnics, administradors, jugadors)
Camp
Tipus
Descripció
Restriccions
id
INT
Identificador únic de l'usuari
PRIMARY KEY, AUTO_INCREMENT
username
VARCHAR(50)
Nom d'usuari per a l'accés al sistema
NOT NULL, UNIQUE
email
VARCHAR(100)
Adreça electrònica de contacte
NOT NULL, UNIQUE
password_hash
VARCHAR(255)
Contrasenya encriptada amb bcrypt
NOT NULL
full_name
VARCHAR(100)
Nom complet de l'usuari
NOT NULL
phone
VARCHAR(20)
Telèfon de contacte
NULL
role
ENUM
Rol d'usuari: 'assistant', 'technician', 'admin'
NOT NULL, DEFAULT 'assistant'
gamer_tag
VARCHAR(50)
Nom de jugador per als tornejos (NOU)
UNIQUE, NULL
assistant_number
VARCHAR(20)
Número d'identificació d'assistent
UNIQUE, NULL
preferred_game
VARCHAR(100)
Joc preferit (NOU)
NULL
total_wins
INT
Total de victòries en tornejos (NOU)
DEFAULT 0
total_losses
INT
Total de derrotes en tornejos (NOU)
DEFAULT 0
created_at
TIMESTAMP
Data de creació del registre
DEFAULT CURRENT_TIMESTAMP
updated_at
TIMESTAMP
Data de darrera actualització
ON UPDATE CURRENT_TIMESTAMP