AUTOMATIZZARE IL SISTEMA DI GESTIONE E VISIONE ONLINE DEI DATI DI CONSEGNE PACCHI: analisi+SQL.

Anatomia SQL
Anatomia SQL

Esempio di automazione di un sistema di gestione e consultazione online delle consegne pacchi, con:

  • analisi del problema
  • progettazione database
  • creazione tabelle SQL
  • esempi di query operative reali

Userò SQL standard compatibile con MySQL / PostgreSQL (con piccole variazioni minime).

Sistema di gestione e monitoraggio consegne pacchi.

1. Scenario reale.

Un’azienda di spedizioni deve:

  • registrare mittenti e destinatari
  • gestire spedizioni e tracking pacchi
  • registrare passaggi logistici
  • permettere ai clienti di controllare lo stato delle consegne online
  • gestire operatori e corrieri

2. Funzionalità principali.

– Registrazione spedizioni
– Assegnazione corrieri
– Tracking in tempo reale
– Storico movimentazioni
– Consultazione online stato spedizione

3. Progettazione del Database.

Tabelle principali

  • CLIENTI
  • CORRIERI
  • SPEDIZIONI
  • TRACCIAMENTI (tracking eventi)
  • MAGAZZINI

4. Creazione Tabelle SQL.

Tabella CLIENTI

CREATE TABLE Clienti (

    idCliente INT PRIMARY KEY AUTO_INCREMENT,

    nome VARCHAR(50) NOT NULL,

    cognome VARCHAR(50) NOT NULL,

    email VARCHAR(100) UNIQUE,

    telefono VARCHAR(20),

    indirizzo VARCHAR(150)

);

Tabella CORRIERI

CREATE TABLE Corrieri (

    idCorriere INT PRIMARY KEY AUTO_INCREMENT,

    nome VARCHAR(50),

    cognome VARCHAR(50),

    telefono VARCHAR(20),

    mezzo VARCHAR(50)

);

Tabella MAGAZZINI

CREATE TABLE Magazzini (

    idMagazzino INT PRIMARY KEY AUTO_INCREMENT,

    nome VARCHAR(100),

    citta VARCHAR(50),

    indirizzo VARCHAR(150)

);

Tabella SPEDIZIONI

CREATE TABLE Spedizioni (

    idSpedizione INT PRIMARY KEY AUTO_INCREMENT,

    codiceTracking VARCHAR(30) UNIQUE NOT NULL,

    idMittente INT,

    idDestinatario INT,

    idCorriere INT,

    peso DECIMAL(6,2),

    dataSpedizione DATE,

    dataConsegnaPrevista DATE,

    stato VARCHAR(50),

    FOREIGN KEY (idMittente) REFERENCES Clienti(idCliente),

    FOREIGN KEY (idDestinatario) REFERENCES Clienti(idCliente),

    FOREIGN KEY (idCorriere) REFERENCES Corrieri(idCorriere)

);

Tabella TRACCIAMENTI (Tracking eventi)

CREATE TABLE Tracciamenti (

    idEvento INT PRIMARY KEY AUTO_INCREMENT,

    idSpedizione INT,

    dataEvento DATETIME,

    descrizione VARCHAR(200),

    idMagazzino INT,

    FOREIGN KEY (idSpedizione) REFERENCES Spedizioni(idSpedizione),

    FOREIGN KEY (idMagazzino) REFERENCES Magazzini(idMagazzino)

);

5. Inserimento dati di esempio

Inserimento clienti

INSERT INTO Clienti (nome, cognome, email, telefono, indirizzo)

VALUES

(‘Mario’, ‘Rossi’, ‘mario@email.it’, ‘333123456’, ‘Via Roma 10’),

(‘Luca’, ‘Bianchi’, ‘luca@email.it’, ‘333654321’, ‘Via Milano 22’);

Inserimento corriere

INSERT INTO Corrieri (nome, cognome, telefono, mezzo)

VALUES (‘Gianni’, ‘Verdi’, ‘333987654’, ‘Furgone’);

Inserimento magazzino

INSERT INTO Magazzini (nome, citta, indirizzo)

VALUES (‘Hub Venezia’, ‘Venezia’, ‘Via Porto 5’);

Inserimento spedizione

INSERT INTO Spedizioni

(codiceTracking, idMittente, idDestinatario, idCorriere, peso, dataSpedizione, dataConsegnaPrevista, stato)

VALUES

(‘TRK123456’, 1, 2, 1, 2.5, ‘2026-02-12’, ‘2026-02-14’, ‘In transito’);

Inserimento evento tracking

INSERT INTO Tracciamenti

(idSpedizione, dataEvento, descrizione, idMagazzino)

VALUES

(1, NOW(), ‘Pacco arrivato al centro smistamento’, 1);

6. Query SQL operative

Visualizzare tutte le spedizioni

SELECT * FROM Spedizioni;

Visualizzare tracking completo di un pacco

SELECT S.codiceTracking, T.dataEvento, T.descrizione, M.nome

FROM Tracciamenti T

JOIN Spedizioni S ON T.idSpedizione = S.idSpedizione

JOIN Magazzini M ON T.idMagazzino = M.idMagazzino

WHERE S.codiceTracking = ‘TRK123456’

ORDER BY T.dataEvento;

Visualizzare spedizioni di un cliente

SELECT codiceTracking, stato

FROM Spedizioni

WHERE idMittente = 1;

Spedizioni assegnate a un corriere

SELECT codiceTracking, stato

FROM Spedizioni

WHERE idCorriere = 1;

Pacchi consegnati in un certo periodo

SELECT codiceTracking, dataConsegnaPrevista

FROM Spedizioni

WHERE stato = ‘Consegnato’

AND dataConsegnaPrevista BETWEEN ‘2026-02-01’ AND ‘2026-02-28’;

Ultimo stato di ogni spedizione

SELECT S.codiceTracking, MAX(T.dataEvento) AS UltimoAggiornamento

FROM Spedizioni S

JOIN Tracciamenti T ON S.idSpedizione = T.idSpedizione

GROUP BY S.codiceTracking;

7. Automazioni possibili

– Aggiornamento automatico tracking
– Invio SMS/email cliente
– Dashboard stato spedizioni
– Report performance corrieri
– Integrazione con GPS mezzi

8. Possibili miglioramenti del sistema

  • Firma digitale alla consegna
  • Foto consegna pacco
  • App mobile corrieri
  • Analisi ritardi spedizioni
  • Integrazione con sistemi e-commerce

Vantaggi del sistema

  • Tracciabilità completa spedizioni
  • Riduzione errori manuali
  • Accesso dati in tempo reale
  • Migliore servizio clienti
** Se puoi sostenere il mio lavoro, comprami un libro | Buy me a book! **
** ISCRIVITI ALLA NEWSLETTER ! **

About the Author

Sergio Mauri
Blogger, autore. Perito in Sistemi Informativi Aziendali, musicista e compositore, Laurea in Discipline storiche e filosofiche e in Filosofia. Premio speciale al Concorso Claudia Ruggeri nel 2007; terzo posto al Premio Igor Slavich nel 2020. Ha pubblicato con Terra d'Ulivi nel 2007 e nel 2011, con Hammerle Editori nel 2013 e 2014, con PGreco nel 2015 con Historica Edizioni e Alcova Letteraria nel 2022 con Silele Edizioni (La Tela Nera) nel 2023 e con Amazon Kdp nel 2024, 2025 e 2026.