Pipeline dati

Modellare

Dall'analisi dei dati grezzi a uno schema relazionale MySQL: tabelle raggruppate per area, chiavi che collegano tutto e vincoli che tengono i dati coerenti.

Corsia di un grande magazzino con scaffalature alte e scatole ordinate su ogni ripiano.
Uno schema fa per i dati quello che le scaffalature fanno per le merci: ogni cosa al suo posto, raggiungibile. Foto di Lance Chang su Unsplash.

In breve

  • 15tabelleQuattordici arrivano dai file del dataset, la quindicesima è il digital twin.
  • 6aree logicheAnagrafiche, operazioni, flotta, eventi, riferimenti e metriche.
  • tripsla tabella pernoCollega carico, autista, camion e rimorchio. Rifornimenti, consegne e incidenti si agganciano al viaggio.

Le sei aree dello schema

Il raggruppamento segue i diagrammi ER del progetto. In verde il cuore operativo; la tabella scura è quella a cui si collegano più tabelle.

Anagrafiche

Chi lavora, per chi, su quali tratte.

  • drivers
  • customers
  • routes

Operazioni

Il carico da consegnare e il viaggio che lo porta.

  • loads
  • trips

Flotta

Mezzi, rimorchi e la loro manutenzione.

  • trucks
  • trailers
  • maintenance_records

Eventi operativi

Quello che succede durante un viaggio.

  • fuel_purchases
  • delivery_events
  • safety_incidents

Riferimenti

I luoghi di carico e consegna.

  • facilities

Metriche e analisi

Aggregati mensili e stato attuale di ogni mezzo.

  • truck_utilization_metrics
  • driver_monthly_metrics
  • digital_twin

I diagrammi entità-relazione

Il primo mostra come si parlano le tabelle, il secondo le colonne con chiavi primarie (PK) ed esterne (FK) e le cardinalità uno-a-molti.

Diagramma ER panoramico: aree Master Data, Operations Core e Fleet Management in alto, eventi operativi al centro, metriche di analisi in basso, con le frecce delle relazioni.
Panoramica delle tabelle. Clic per ingrandire.
Diagramma ER con le colonne di ogni tabella, chiavi primarie e chiavi esterne evidenziate e frecce uno-a-molti.
Tabelle e colonne, con chiavi e cardinalità. Clic per ingrandire.
DRV00001

Chiavi alfanumeriche native come primarie ed esterne: restano uguali ai file di origine.

FOREIGN KEY

Integrità referenziale, con ON DELETE CASCADE o RESTRICT a seconda della tabella.

ENUM · DECIMAL · DATETIME

Tipi precisi, più vincoli CHECK e UNIQUE per bloccare valori impossibili.

Dallo schema al database

Lo schema non è disegnato a mano sul server: lo crea uno script Python, creazione_db_v3.py, che si può rilanciare da zero.

Codice Python: connessione a MySQL con i parametri letti da variabili d'ambiente, poi DROP DATABASE IF EXISTS, CREATE DATABASE GreenLog e USE GreenLog.
L'apertura dello script di creazione. Clic per ingrandire.
  1. Connettersi senza credenziali nel codiceHost, utente, password e nome del database arrivano da os.environ, caricato da un file .env.
  2. Ripartire pulitiDROP DATABASE IF EXISTS e poi CREATE DATABASE GreenLog: ogni esecuzione produce lo stesso schema.
  3. Creare le tabelleUna CREATE TABLE per ciascuna delle 15 tabelle, con chiavi e vincoli già dichiarati.
  4. Allineare le unitàLe colonne nascono già in unità metriche: litri al posto di galloni, chili al posto di libbre.

Strumenti usati

StrumentoA cosa è servito
MySQLIl database relazionale che conserva i dati.
Python con mysql-connector-pythonEseguire gli script di creazione e dialogare con il database.
python-dotenvTenere le credenziali in un file .env, fuori dal codice.
Software per diagrammi ERDisegnare relazioni, cardinalità e vincoli prima di scrivere il codice.