Lavorando con i database aziendali, mi trovo spesso a dover mettere un ordine nelle informazioni che contengono. Una volta, mentre la mia mente era occupata da questo pensiero, sono entrato casualmente in una caffetteria. Su una parete ho trovato un elenco dei diversi modi in cui è possibile ordinare il caffè:
|
|
|
Nella mia testa, senza volerlo, ho cominciato a razionalizzare l’elenco. Ecco i miei ragionamenti.
Perché classificare?
L’informazione è una preziosa materia prima, rivelata alla fine del secondo millennio. Operando l’elaborazione statistica dei dati, si scoprono strutture spesso nascoste nella mole delle informazioni raccolte. I dati chiari e bene classificati che non lasciano spazio a fraintendimenti:
- aiutano a capire la propria struttura intrinseca
- ci preparano a prevedere tutti i casi possibili
- facilitano la traduzione dei sistemi applicativi in altre lingue
- permettono la specializzazione nel lavoro di categorizzazione dei dati
- permettono di automatizzare alcune operazioni basate sui dati
Immaginiamo di avere un database che contiene la registrazione delle ordinazioni del caffè. Ad ogni ordinazione viene associata una voce presa dall’elenco che abbiamo visto all’inizio dell’articolo. Questo elenco non è facilmente fruibile per un’analisi statistica. Se, ad esempio, vogliamo sapere quanti clienti hanno ordinato un semplice caffè espresso, possiamo contare il numero di ordinazioni per ogni voce. Scopriamo però che al caffè espresso corrisponde più di una voce: caffè normale, un brodo nero, una spremuta di arabica eccetera, pur essendo la stessa cosa.
Un altro problema di questo elenco è la presenza di diverse caratteristiche utilizzate nelle voci. Ad esempio, ci sono 14 voci che descrivono il caffè in vetro. Quali sono queste caratteristiche? Sono tutte importanti? Come fare un’analisi statistica per queste caratteristiche? Ad esempio quante sono le ordinazioni del caffè in vetro?
Un terzo problema è l’utilizzo dell’elenco nei sistemi applicativi per caratterizzare il dato che viene salvato nel database. Infatti, l’utilizzatore dell’elenco deve scorrere tutte le voci per trovare quella che corrisponde meglio al caso che viene registrato. Come ordinare l’elenco? In ordine alfabetico, oppure secondo la frequenza decrescente di uso? L’utilizzo di elenchi troppo lunghi spesso porta alla scarsa qualità dei dati, in quanto l’utente si ferma alla prima voce che sembra quella giusta, senza controllare quelle restanti.
Elenco razionalizzato
Cominciamo dunque razionalizzare l’elenco dei modi di ordinare il caffè. Individuiamo delle poche caratteristiche che, combinandosi insieme, producono un elenco così lungo.
Analizzando le prime tre voci scopro la prima caratteristica: la concentrazione, che assume i seguenti valori:
- normale
- ristretto
- lungo
Dalla quarta voce dell’elenco trovo un’altra caratteristica indipendente descritta con la parola “macchiato”. La chiamo “Latte aggiunto” che assume due valori:
- sì (quando compare la parola “macchiato”)
- no (negli altri casi)
Il latte aggiunto, inoltre, può avere diversa temperatura:
- caldo
- freddo
Nella seguente tabella presento il risultato per le prime sette voci:
Tipo caffè | Concentrazione | Latte aggiunto | Temperatura latte aggiunto |
---|---|---|---|
Caffè normale | normale | no | |
Caffè ristretto | ristretto | no | |
Caffè lungo | lungo | no | |
Caffè ristretto macchiato caldo | ristretto | sì | caldo |
Caffè ristretto macchiato freddo | ristretto | sì | freddo |
Caffè lungo macchiato caldo | lungo | sì | caldo |
Caffè lungo macchiato freddo | lungo | sì | freddo |
Continuando in questo modo, arrivo al seguente risultato:
Tipo caffè | Concentrazione | Quantità caffè | Schiuma | Latte aggiunto | Temperatura latte aggiunto | Latte a parte | Temperatura latte a parte | Acqua a parte | Temperatura acqua a parte | Corretto | Grandezza tazza | Materiale tazza | Temperatura tazza |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Caffè normale | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè ristretto | ristretto | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè lungo | lungo | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè ristretto macchiato caldo | ristretto | singolo | sì | caldo | no | no | no | piccola | porcellana | calda | |||
Caffè ristretto macchiato freddo | ristretto | singolo | sì | freddo | no | no | no | piccola | porcellana | calda | |||
Caffè lungo macchiato caldo | lungo | singolo | sì | caldo | no | no | no | piccola | porcellana | calda | |||
Caffè lungo macchiato freddo | lungo | singolo | sì | freddo | no | no | no | piccola | porcellana | calda | |||
Caffè ristretto macchiato caldo senza schiuma | ristretto | singolo | no | sì | caldo | no | no | no | piccola | porcellana | calda | ||
Caffè ristretto macchiato schiumato | ristretto | singolo | sì | sì | no | no | no | piccola | porcellana | calda | |||
Caffè normale schiumato | normale | singolo | sì | no | no | no | no | piccola | porcellana | calda | |||
Caffè normale macchiato caldo | normale | singolo | sì | caldo | no | no | no | piccola | porcellana | calda | |||
Caffè normale macchiato freddo | normale | singolo | sì | freddo | no | no | no | piccola | porcellana | calda | |||
Caffè normale macchiato caldo con un po’ di latte freddo | normale | singolo | sì | caldo | sì | freddo | no | no | piccola | porcellana | calda | ||
Caffè ristretto in tazza grande | ristretto | singolo | no | no | no | no | grande | porcellana | calda | ||||
Caffè ristretto in tazza grande macchiato freddo | ristretto | singolo | sì | freddo | no | no | no | grande | porcellana | calda | |||
Caffè ristretto in tazza grande macchiato caldo | ristretto | singolo | sì | caldo | no | no | no | grande | porcellana | calda | |||
Caffè lungo in tazza grande | lungo | singolo | no | no | no | no | grande | porcellana | calda | ||||
Caffè lungo in tazza grande macchiato caldo | lungo | singolo | sì | caldo | no | no | no | grande | porcellana | calda | |||
Caffè lungo in tazza grande macchiato freddo | lungo | singolo | sì | freddo | no | no | no | grande | porcellana | calda | |||
Caffè lungo in tazza grande con acqua calda | lungo | singolo | no | no | sì | calda | no | grande | porcellana | calda | |||
Caffè lungo in tazza grande con acqua fredda | lungo | singolo | no | no | sì | fredda | no | grande | porcellana | calda | |||
Caffè lungo in tazza grande macchiato caldo con acqua calda | lungo | singolo | sì | caldo | no | sì | calda | no | grande | porcellana | calda | ||
Caffè lungo in tazza grande macchiato caldo con acqua fredda | lungo | singolo | sì | caldo | no | sì | fredda | no | grande | porcellana | calda | ||
Caffè lungo in tazza grande macchiato freddo con acqua calda | lungo | singolo | sì | freddo | no | sì | calda | no | grande | porcellana | calda | ||
Caffè lungo in tazza grande macchiato freddo con acqua fredda | lungo | singolo | sì | freddo | no | sì | fredda | no | grande | porcellana | calda | ||
Caffè americano | americano | doppio | no | no | no | no | grande | porcellana | calda | ||||
Caffè Usa | americano | doppio | no | no | no | no | grande | porcellana | calda | ||||
Caffè normale con acqua calda | normale | singolo | no | no | sì | calda | no | piccola | porcellana | calda | |||
Caffè normale con acqua fredda | normale | singolo | no | no | sì | fredda | no | piccola | porcellana | calda | |||
Ristretto, ristrettissimo, schiumato | ristrettissimo | singolo | sì | no | no | no | no | piccola | porcellana | calda | |||
Caffè ristrettissimo con poco latte | ristrettissimo | singolo | poco | no | no | no | piccola | porcellana | calda | ||||
Caffè in vetro | normale | singolo | no | no | no | no | piccola | vetro | calda | ||||
Caffè ristretto in vetro | ristretto | singolo | no | no | no | no | piccola | vetro | calda | ||||
Caffè ristretto in vetro macchiato caldo | ristretto | singolo | sì | caldo | no | no | no | piccola | vetro | calda | |||
Caffè ristrettissimo con tanto latte | ristrettissimo | singolo | molto | no | no | no | piccola | porcellana | calda | ||||
Caffè in vetro lungo | lungo | singolo | no | no | no | no | piccola | vetro | calda | ||||
Caffè in vetro con acqua calda a parte | normale | singolo | no | no | sì | calda | no | piccola | vetro | calda | |||
Caffè in vetro con acqua calda a parte lungo | lungo | singolo | no | no | sì | calda | no | piccola | vetro | calda | |||
Caffè in vetro macchiato caldo | normale | singolo | sì | caldo | no | no | no | piccola | vetro | calda | |||
Caffè in vetro macchiato caldo lungo | lungo | singolo | sì | caldo | no | no | no | piccola | vetro | calda | |||
Caffè in vetro macchiato caldo con acqua calda a parte | normale | singolo | sì | caldo | no | sì | calda | no | piccola | vetro | calda | ||
Caffè in vetro macchiato caldo con acqua calda a parte lungo | lungo | singolo | sì | caldo | no | sì | calda | no | piccola | vetro | calda | ||
Caffè in vetro macchiato freddo | normale | singolo | sì | freddo | no | no | no | piccola | vetro | calda | |||
Caffè in vetro macchiato freddo lungo | lungo | singolo | sì | freddo | no | no | no | piccola | vetro | calda | |||
Caffè in vetro macchiato freddo con acqua calda a parte | normale | singolo | sì | freddo | no | sì | calda | no | piccola | vetro | calda | ||
Caffè in vetro macchiato freddo con acqua calda a parte lungo | lungo | singolo | sì | freddo | no | sì | calda | no | piccola | vetro | calda | ||
Caffè in tazza fredda | normale | singolo | no | no | no | no | piccola | porcellana | fredda | ||||
Caffè in tazza bollente | normale | singolo | no | no | no | no | piccola | porcellana | bollente | ||||
Caffè macchiato caldissimo | normale | singolo | sì | caldissimo | no | no | no | piccola | porcellana | calda | |||
Caffè corretto grappa | normale | singolo | no | no | no | sì | piccola | porcellana | calda | ||||
Caffè corretto whisky | normale | singolo | no | no | no | sì | piccola | porcellana | calda | ||||
Caffè corretto Fernet | normale | singolo | no | no | no | sì | piccola | porcellana | calda | ||||
Caffè corretto anice | normale | singolo | no | no | no | sì | piccola | porcellana | calda | ||||
Caffè corretto schiuma | normale | singolo | sì | no | no | no | no | piccola | porcellana | calda | |||
Caffè ristretto in tazza fredda | ristretto | singolo | no | no | no | no | piccola | porcellana | fredda | ||||
Caffè ristretto in tazza bollente | ristretto | singolo | no | no | no | no | piccola | porcellana | bollente | ||||
Caffè ristrettissimo | ristrettissimo | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Espresso | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Espresso molto lungo | molto lungo | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Espresso ristretto | ristretto | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè corto | ristretto | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Un nero | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè basso | ristretto | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè macchiato lungo con acqua calda a parte | lungo | singolo | sì | no | sì | calda | no | piccola | porcellana | calda | |||
Caffè lungo molto macchiato | lungo | singolo | molto | no | no | no | piccola | porcellana | calda | ||||
Goccia di caffè con crema di latte (Paperino) | ristrettissimo | singolo | sì | no | no | no | piccola | porcellana | calda | ||||
Goccia di caffè con latte senza schiuma | ristrettissimo | singolo | no | sì | no | no | no | piccola | porcellana | calda | |||
Caffè doppio | normale | doppio | no | no | no | no | piccola | porcellana | calda | ||||
Caffè doppio ristrettissimo | ristrettissimo | doppio | no | no | no | no | piccola | porcellana | calda | ||||
Caffè doppio ristrettissimo con latte freddo a parte | ristrettissimo | doppio | no | sì | freddo | no | no | piccola | porcellana | calda | |||
Caffè doppio ristretto | ristretto | doppio | no | no | no | no | piccola | porcellana | calda | ||||
Caffè doppio lungo | lungo | doppio | no | no | no | no | piccola | porcellana | calda | ||||
Caffè doppio macchiato caldo | normale | doppio | no | sì | caldo | no | no | piccola | porcellana | calda | |||
Caffè doppio macchiato freddo | normale | doppio | no | sì | freddo | no | no | piccola | porcellana | calda | |||
Caffè doppio ristretto con latte freddo a parte | ristretto | doppio | no | sì | freddo | no | no | piccola | porcellana | calda | |||
Una spremuta di brasil | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Una spremuta di arabica | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè con nuvoletta | normale | singolo | sì | no | no | no | no | piccola | porcellana | calda | |||
Caffè spumato | normale | singolo | sì | no | no | no | no | piccola | porcellana | calda | |||
Un brodo nero | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Una spremuta di chicchi | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Un caffè con la barba | normale | singolo | sì | no | no | no | piccola | porcellana | calda | ||||
Un americano macchiato | americano | singolo | sì | no | no | no | grande | porcellana | calda | ||||
Un macchiato lungo | lungo | singolo | sì | no | no | no | piccola | porcellana | calda | ||||
Caffè alla caffeina | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè super | normale | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Caffè francese | lungo | singolo | no | no | no | no | piccola | porcellana | calda | ||||
Un caffè leggero | lungo | singolo | no | no | no | no | piccola | porcellana | calda |
In questo lavoro non mi interessa la varietà della materia prima, come arabica o robusta per i chicchi o il tipo di liquore per la correzione. Ho subito escluso alcune voci dall’elenco che introducono caratteristiche poco usate. Ad esempio, “Caffè al volo” aggiungerebbe la caratteristica “Velocità di preparazione”.
L’elenco si scompone di 13 caratteristiche:
- Concentrazione: ristrettissimo, ristretto, normale, lungo, molto lungo, americano.
- Quantità caffè: singolo, doppio.
- Schiuma: no, sì.
- Latte aggiunto: no, poco, sì, molto.
- Temperatura latte aggiunto: freddo, caldo, caldissimo.
- Latte a parte: no, sì.
- Temperatura latte a parte: freddo, caldo.
- Acqua a parte: no, sì.
- Temperatura acqua a parte: fredda, calda.
- Corretto: no, sì.
- Grandezza tazza: piccola, grande.
- Materiale tazza: porcellana, vetro.
- Temperatura tazza: fredda, calda, bollente.
Si possono notare sia la maggior chiarezza di ogni singola caratteristica rispetto all’elenco originale molto confuso sia i pochi valori (da due a sei) che assume ogni caratteristica. Questo facilita il lavoro di attribuzione delle caratteristiche al dato e l’analisi statistica.
La scomposizione in caratteristiche dà una visione più completa di tutti i casi di ordinazione che può ricevere il barista. Infatti il prodotto cartesiano di tutte le caratteristiche è di gran lunga superiore all’elenco originale. Ad esempio, in futuro potrebbe essere richiesto un caffè americano corretto, ora assente dall’elenco. Inoltre la scomposizione mostra le tredici componenti più importanti del prodotto, permettendo di conoscere meglio il fenomeno descritto.
La buona pratica di classificazione
Abbiamo dunque visto come sia possibile razionalizzare l’elenco dei modi di ordinazione del caffè. Vediamo ora come questa metodologia si può applicare ai dati in genere.
Per chi volesse approfondire l’argomento, rimando ad ICECI – classificazione internazionale delle cause esterne di lesione (vedi Risorse). Essa analizza in modo completo 31 diverse caratteristiche dell’evento dannoso che comporta lesioni alla persona.
Scomposizione in fattori
La divisione di una lista onnicomprensiva in più liste dedicate alle singole caratteristiche si chiama “scomposizione in fattori” o “fattorizzazione”. È importante dare un nome chiaro e non ambiguo ad ogni caratteristica (fattore), evitando nomi troppo generici come “tipo danno”. L’insieme dei fattori rappresenta uno spazio cartesiano multidimensionale, dove ogni fattore diventa una coordinata.
La classificazione delle caratteristiche indipendenti del dato è un ragionamento guidato analitico e razionale. Questa attività può essere divisa e quindi specializzata. Ad esempio, alcuni fattori possono essere classificati automaticamente, per alcuni potrebbe invece servire uno specialista in materia. Viceversa, la classificazione che unisce tutti i fattori richiede un lavoro manuale di chi deve conoscere tutti gli aspetti inclusi nella classificazione.
Se alcune caratteristiche non sono del tutto indipendenti, potrebbe anzi essere utile creare un’unica lista che combina insieme le loro voci, eliminando le combinazioni inesistenti.
Normalizzazione
Ogni classificazione si deve implementare nel database come una tabella. Essa deve contenere almeno le colonne per l’ID della voce, la denominazione e l’ordine in cui deve comparire nelle liste dell’applicazione. In tutte le tabelle delle entità che usano la voce, essa viene indicata con l’ID, utilizzando le chiavi esterne, anziché con la denominazione.
In questo modo è possibile cambiare facilmente la denominazione della voce o l’ordine della lista in un solo posto, precisamente nella tabella di classificazione. Inoltre, diventa facile tradurre le voci in altre lingue.
Univocità
Gli elementi della classificazione devono essere univoci, cioè due elementi dell’elenco devono corrispondere a due casi nettamente distinti. Potrebbe essere utile aggiungere alla tabella di classificazione diverse colonne per le note che aiutano l’utente a scegliere la voce corretta. Una colonna spiegherebbe che cosa include la voce, l’altra che cosa esclude.
Completezza
L’insieme delle voci deve comprendere in anticipo tutti i casi possibili. La buona qualità della classificazione necessita di un accurato lavoro preliminare. Non è buona prassi l’inserimento arbitrario delle voci mancanti quando non si trovano.
Gerarchie
Vi sono alcune classificazioni gerarchiche. Ad esempio, ogni voce nell’elenco delle province italiane corrisponde a una regione. Le gerarchie possono esistere a più di due livelli. Inoltre, ogni voce potrebbe partecipare a più gerarchie.
La struttura delle gerarchie deve essere indicata collegando fra loro le tabelle della classificazione attraverso le chiavi esterne. Classificando l’entità è sufficiente indicare la voce al livello più basso della gerarchia, in quanto livelli aggregati si riconoscono automaticamente dalla gerarchia stessa.
Dati non previsti e dati mancanti
La volontà di includere nella classificazione tutto lo scibile, porta spesso alla necessità di distinguere i nuovi casi non ancora compresi negli elenchi e i casi dell’informazione mancante. È utile prevedere due voci per tali casi, da mettere in fondo alla classificazione. Se quest’ultima è gerarchica, è necessario prevedere le due voci in ogni ramo di classificazione.
Equalizzazione
Nella costruzione di una classificazione è opportuno evitare troppo squilibrio delle frequenze con cui le voci appaiono nell’applicazione. Accorpando le diverse voci con poca frequenza in una sola la cui frequenza è all’incirca uguale a quella delle altre voci, si alleggerisce la classificazione.
Ad esempio, ci sono poche persone che superano l’età di 90 anni. Per questo, la classificazione di età divisa in fasce potrebbe essere la seguente:
- 0-4
- 5-9
- …
- 75-79
- 80-89
- 90+
È invece utile mantenere la divisione delle voci le quali, pur avendo una frequenza bassa, presentano una particolarità importante rispetto alle voci vicine.
Classificazione ufficiale
È utile avvalersi della classificazione ufficiale già esistente. Questo permette il confronto e l’interscambio dei dati dell’applicazione con quelli delle fonti esterne. Inoltre la classificazione ufficiale di solito ha qualità elevata, univocità e completezza.
Se la classificazione ufficiale è troppo dettagliata, è opportuno accorpare le voci, impiegando l’equalizzazione. È utile conservare la mappatura (la corrispondenza tra le voci) fra le due classificazioni per poter effettuare il confronto e l’interscambio dei dati.
Revisione
Ogni classificazione potrebbe subire con il tempo delle revisioni. Per poterla revisionare diventa utile tenere nel database, insieme con la classificazione, anche le informazioni non codificate, come ad esempio le descrizioni testuali o i dati multimediali. Queste informazioni diventano utili per l’attribuzione manuale o semiautomatica della nuova classificazione nei casi in cui a una voce della vecchia classificazione corrisponde più di una voce di quella nuova.
La revisione potrebbe consistere in un piccolo ritocco dell’elenco con l’aggiunta di poche voci o suddividendone alcune in più voci o, viceversa, accorpando più voci. In queste eventualità potrebbe essere conveniente la modifica dei dati contenuti nella tabella di classificazione e, contemporaneamente, delle chiavi esterne delle entità ad essa collegate.
Se invece si tratta di un intervento profondo, che riguarda la struttura intera della classificazione, è preferibile aggiungere una nuova classificazione, mantenendo entrambe. I dati nuovi vanno categorizzati con entrambe le classificazioni. I dati inseriti precedentemente dovranno essere categorizzati con la nuova classificazione partendo da quella vecchia e da altre informazioni. A questo punto sarà possibile abbandonare quella vecchia.
Alla fine dell’intervento, nell’applicazione rimarrà la nuova classificazione e le entità classificate solo nel modo nuovo.
Conclusione
Una buona tazza di caffè normale, singolo, senza schiuma e senza latte aggiunto, senza latte né acqua a parte, non corretto, nella tazza piccola e calda di porcellana e una buona pratica di classificazione mi hanno chiarito le idee su come organizzare meglio le informazioni del mio database aziendale.
Risorse
- ICECI – classificazione internazionale delle cause esterne di lesione. http://iceci.org/international-classification-of-external-causes-of-injuries-iceci/
Molto attraente la prima parte anche per i non addetti ai lavori.
La mia intenzione è infatti quella di evidenziare quanto sia importante poter organizzare bene le informazioni in proprio possesso, anche se non si è addetti ai lavori.