Skip to content

Latest commit

 

History

74 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Delivery Database — Laboratorio di Basi di Dati

Progetto universitario di gruppo realizzato per il corso di Laboratorio di Basi di Dati dell'Università degli Studi dell'Aquila.

L'obiettivo è progettare e implementare una base di dati relazionale per un'attività di ristorazione con servizio di consegna a domicilio, seguendo l'intero processo di progettazione:

requisiti → modello ER → ristrutturazione → schema relazionale → schema fisico → SQL

Il mio contributo

Il progetto è stato sviluppato in gruppo.

Il mio contributo si è concentrato principalmente su:

  • analisi dei requisiti e modello ER concettuale;
  • definizione dei vincoli non esprimibili direttamente nel modello ER;
  • traduzione verso lo schema fisico;
  • create_tables.sql;
  • viste SQL;
  • query #1, #4 e #11;
  • collaborazione su funzioni e trigger.

Uso di strumenti AI

Lo schema ER e la parte principale di create_tables.sql sono stati sviluppati senza un uso sostanziale di AI.

Ho utilizzato strumenti AI:

  • come supporto nella revisione e ottimizzazione di alcune viste e query;
  • in modo più significativo nell'implementazione di funzioni e trigger.

Questa distinzione è riportata per rendere chiaro quali parti del progetto rappresentano meglio le competenze che utilizzo in autonomia.

Obiettivo del sistema

La base di dati gestisce:

  • clienti;
  • prodotti e immagini;
  • ingredienti e ricette;
  • caratteristiche personalizzabili;
  • gruppi di mutua esclusione;
  • ordini e righe d'ordine;
  • personale e proprietario;
  • storico degli stati operativi.

Diagrammi

Modello ER concettuale

Modello ER concettuale

Modello ER ristrutturato

Modello ER ristrutturato

Durante la ristrutturazione:

  • l'attributo multivalore delle immagini viene trasformato in IMMAGINE_PRODOTTO;
  • la relazione Prodotto–Ingrediente viene esplicitata tramite RICETTA;
  • la relazione RigaOrdine–Caratteristica viene esplicitata tramite SCELTA_CARATTERISTICA_RIGA;
  • i prezzi applicati agli ordini vengono storicizzati per preservare lo storico.

Scelte progettuali principali

  • Il menu corrente è ricavato dai prodotti attivi.
  • Lo stato gestionale dell'ordine è separato dallo stato operativo.
  • Lo stato operativo corrente è ricavato dall'ultimo record di STORICO_STATO.
  • Le caratteristiche non più disponibili vengono disattivate invece di essere eliminate.
  • Prezzi e differenze di prezzo applicati vengono conservati nello storico degli ordini.
  • I vincoli semplici vengono gestiti tramite PK, FK, UNIQUE, CHECK e NOT NULL.
  • I vincoli più complessi vengono gestiti tramite viste, procedure e trigger.

Schema relazionale

Le principali tabelle sono:

CLIENTE
UTENTE_INTERNO
ORDINE
PRODOTTO
IMMAGINE_PRODOTTO
INGREDIENTE
RICETTA
GRUPPO_MUTUA_ESCLUSIONE
CARATTERISTICA
RIGA_ORDINE
SCELTA_CARATTERISTICA_RIGA
STORICO_STATO

Lo schema relazionale completo è documentato in:

docs/06_consegna/Documentazione_Progetto.md

Funzionalità SQL

Il progetto comprende:

  • 14 operazioni richieste dalla specifica;
  • 3 viste di supporto;
  • funzioni SQL per totale ordine e tempo stimato;
  • stored procedure per le operazioni con logica procedurale;
  • trigger per vincoli di integrità non esprimibili direttamente nel DDL;
  • dati di test.

Tra le query a cui ho lavorato direttamente:

  • Query 1 — generazione del menu;
  • Query 4 — calcolo di prezzo totale e tempo stimato;
  • Query 11 — conteggio degli ordini attivi per stato.

Tecnologie

  • MySQL / MariaDB
  • SQL
  • ER Modeling
  • Relational Database Design
  • draw.io / diagrams.net
  • PHP, HTML, CSS e JavaScript per la dashboard dimostrativa

Struttura del repository

Delivery/
├── app/
│   └── php/
├── assets/
│   ├── diagrammi/
│   └── immagini/
├── docs/
│   └── 06_consegna/
└── sql/
    ├── 01_schema/
    ├── 02_query/
    ├── 03_procedure/
    ├── 04_funzioni/
    ├── 05_viste/
    ├── 06_trigger/
    └── 07_dati_test/

Specifica originale

La specifica assegnata dal docente è disponibile qui:

https://github.com/LaboratorioBasiDiDati-Univaq/LBD_Project_Specifications/blob/main/2025/Progetto_LBD_2025_1_Delivery.md

Documentazione

La documentazione completa del progetto è disponibile nella cartella docs/.

Il README riassume le parti principali; motivazioni progettuali, vincoli, schema relazionale, query e implementazione completa sono documentati nei file del repository.

About

University team project: ER modeling, relational schema and MySQL implementation for a food-delivery system.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages