title: Schema a stella
text: # Schema a stella
  
  Lo schema a stella (chiamato anche star schema join oppure schema multidimensionale) è lo stile più semplice di schema per data warehouse. La struttura di base consiste in una tabella di fatti che referenzia un numero (da due in su) di tabelle di dimensioni.
  
  Questo tipo di schema viene solitamente utilizzato per la rappresentazione di data mart, ovvero di un sottoinsieme di dati aziendali o dipartimentali con uno specifico e ben definito ambito di analisi.
  
  ## Modello
  
  Lo schema a stella classifica gli attributi di un evento come fatti (valori numerici o temporali), e gli attributi descrittivi delle dimensioni (identificativo del prodotto, nome del cliente, data di vendita) che definiscono il contesto dei fatti. Un record, infatti, è il nesso tra i valori di una dimensione specifica ed i fatti registrati. Tutti i fatti sono conservati ad un livello uniforme di dettaglio (o grana) nella tabella dei fatti. Gli attributi della dimensione, invece, sono organizzati in gruppi di affinità e conservati con un minimo numero di tabelle delle dimensioni.
  
  Uno schema a stella per l'analisi di dati meteorologici può avere come fatti i valori di: temperatura, pressione atmosferica, velocità del vento, precipitazioni, copertura nuvolosa, ecc. mentre come dimensioni, i dati relativi a: luogo, data / ora, relatore, ecc.
  
  Gli schemi a stella sono progettati per ottimizzare la facilità d'uso e le prestazioni per il recupero dei dati, riducendo al minimo il numero di tabelle da unire in join per ottenere i dati ricercati.
  
  Il nome di schema a stella è dovuto alla rappresentazione grafica delle relazioni fra la tabella dei fatti centrale (la stella luminosa) circondata dalle dimensioni (i pianeti). In una datawarehouse l'insieme di diversi data mart ricorda, così, una costellazione di stelle.
  
  * La tabella dei fatti contiene i valori misurabili registrati per uno specifico evento. Per poter conservare i dati a livello atomico, generalmente ci sono un numero molto elevato di record (miliardi) in queste tabelle. Viene quindi posta una particolare cura per ridurre al minimo il numero e le dimensioni degli attributi, al fine di limitare le dimensioni complessive della tabella e mantenere elevate le prestazioni. Le tabelle dei fatti, in genere, sono di 3 tipi - di transazione (ad esempio fatti su uno specifico evento di vendita), istantanea (o snapshot) (fatti registrati in uno specifico momento temporale, ad esempio, registrazione degli ordini a fine mese), e le tabelle istantanee ad accumulo (o accumulating snapshot tables) (ad esempio, dati di vendita mensili per i prodotti).
  * Le tabelle delle dimensioni di solito hanno pochi record rispetto alle tabelle dei fatti, tuttavia possono avere un numero anche molto grande di attributi che possono essere utilizzate per la ricerca dei dati dei fatti collegati.
  
  Spesso ci sono migliaia di attributi che descrivono le diverse sfaccettature di un singolo fatto. Questi vengono raccolti nelle tabelle delle dimensioni in funzione di un livello più o meno alto di affinità fra loro. Per esempio, gli attributi di colore, stile, dimensioni e trama, possono descrivere un prodotto e dovrebbero essere inclusi in una relativa tabella delle dimensioni del prodotto. Le tabelle delle dimensioni includono attributi che tipicamente dovrebbero essere normalizzati in tabelle differenti (Schema a fiocco di neve). Per esempio, una località può essere identificata dal Comune che appartiene ad una provincia, una regione ed uno stato; tutti questi attributi dovrebbero essere inclusi in un'unica tabella relativa alla dimensione 'Località'.
  
  Solitamente le tabelle delle dimensioni contengono dati ridondanti e sono solo in seconda forma normale, mentre le tabelle dei fatti sono in terza forma normale.
  
  ### Benefici
  
  Il beneficio principale di uno schema a stella è la semplicità con cui un utente riesce a ricercare i valori desiderati: le query sono scritte con pochi e semplici inner join tra la tabella dei fatti ed un numero piccolo di dimensioni. Le join sono più semplici di quelle possibili nello schema a fiocco di neve. Inoltre, le condizioni necessitano solo di filtrare gli attributi desiderati e le aggregazioni sono veloci.
  
  Lo schema a stella è un modo per implementare funzionalità di database multi-dimensionale utilizzando un database relazionale: dal momento che molte aziende utilizzano già i database relazionali, un DBMS multi-dimensionale specializzato risulterebbe poco conveniente ed economicamente dispendioso.
  
  