[Gfoss] SpatiaLite query builder grafico

a.furieri a lqt.it a.furieri a lqt.it
Mer 14 Feb 2018 19:19:34 CET


On Wed, 14 Feb 2018 17:03:44 +0100, nino formica wrote:
> Alcuni amici a cui sto cercando di insegnare i primi rudimenti per 
> scrivere
> delle query SpatiaLite, mi hanno chiesto se esiste la possibilità di 
> farlo
> con qualche query builder grafico (per capirci simile a quello che 
> c'è in
> MS Access).
> In effetti non ci avevo pensato prima, ma effettivamente ciò 
> eviterebbe a
> molti utenti basici di evitarsi la sintassi SQL un po' astrusa.
>

ciao Nino,

sono personalmente convinto che qualsiasi query builder grafico
"stile MS Access" alla lunga sia fortemente controproducente,
e cerco di spiegare perche'.

qualsiasi wizard GUI, per quanto sofisticato possa essere,
finisce inevitabilmente col ricondurre qualsiasi problema
a poche situazioni standard "pre-masticate" in modo
abbastanza rigido, che vanno verosimilmente bene in molti
casi generici ma che lasciano del tutto scoperte tante
altre situazioni meno frequenti e/o piu' complesse che
pure si riscontano abbastanza di frequente.

viceversa il linguaggio SQL (perche' non dobbiamo mai
dimenticare che e' un vero e proprio linguaggio di
programmazione, per quanto atipico) offre una potenza
ed una flessibilita' praticamente illimitate.
incapsulare SQL dentro ad un rigido guscio GUI finisce
quindi inevitabilmente per castrare molte delle
funzionalita' piu' avanzate e sofisticate, che finiscono
semplicemente per essere ignorate dato che sarebbe
troppo complesso supportarle adeguatemente in forma
grafica.

io non definirei la sintassi SQL "un po' astrusa", perche'
e' oggetivamente molto semplice, utilizza giusto una decina
di comandi e presenta una struttura del tutto logica,
assolutamente regolare e consistente noche' facilmente
intuitiva e predicibile.

a mio modesto parere molti utenti (basic e non solo) incontrano
grosse difficolta' nel loro l'approccio ad SQL principalmente
per i seguenti motivi:

1) SQL e' un vero e proprio linguaggio di programmazione;
    per scrivere una query SQL efficiente e magari non banale
    serve sicuramente una "testa da programmatore", cosa che
    evidentemente e' alla portata di molti ma non di tutti.

2) SQL e' un linguagio atipico, visto che si basa sul
    modello dichiarativo invece che sul piu' comune modello
    imperativo.
    detta in parole semplici: nei linguaggi imperativi (C/C++,
    Java, Python, PHP etc) il programmatore deve minuziosamente
    indicare una serie di "azioni" che eseguite in sequenza
    producono il risultato desiderato.
    viceversa in un linguaggio dichiarativo (come SQL) il
    programmatore deve semplicemente descrivere il risultato
    atteso, specificando tutti i vincoli e le condizioni
    restrittive a cui deve essere soggetto.
    a partire da questi elementi sara' poi il sw stesso a
    determinare automaticamente la corretta sequenza di "azioni"
    che produce il risultato richiesto nel modo piu' efficiente
    ed ottimizzato.
    purtroppo capita molto spesso che sviluppatori in possesso
    di una discreta familiarita' con altri linguaggi continuano
    a ragionare in modo imperativo anche quando devono scrivere
    una query SQL, e questo li porta inevitabilmente fuori strada.

3) dato che SQL e' un linguaggio, richiede un certo livello
    di conoscenze e di competenze specifiche per potere essere
    utilizzato con qualche soddisfazione.
    nulla di particolarmente complicato, visto che per acquisire
    una discreta padronanza di SQL bastano abbondantemente un paio
    di giornate di studio accompagnato da tanti test pratici,
    magari seguendo un buon tutorial.
    purtroppo invece moltissimi utenti sono assolutamente convinti
    che SQL si possa usare "ad orecchio", procedendo ad occhio e
    croce senza mai degnarsi di consultare uno straccio di
    documentazione (peraltro largamente diffusa e facilmente
    consultabile).

3.bis) per potere usare con qualche successo lo Spatial SQL
    serve ovviamente una discreta competenza generale relativa
    a "SQL liscio", visto che la parte "spatial" e' semplicemente
    un'estesione che si appoggia sulla comune sintassi base.
    noto purtroppo che molti utenti GIS tendono invece a
    concentrare la propria attenzione esclusivamente sulla
    parte specificamente "spatial", mentre trascurano gli
    aspetti "non spatial" ritenendoli di scarso interesse.

3.ter) ogni DBMS ha la sua specifica variante dialettale
    di SQL, con le sue tipicita' ed idiosincrasie.
    chi gia' padroneggia un qualsiasi dialetto SQL incontrera'
    ben poche difficolta' a familiarizzare in tempi brevissimi
    con un dialetto differente, ma sicuramente serve almeno un
    pizzico di studio della documentazione specifica.
    passaggio che invece molti tendono a saltare a pie' pari.

conclusione: SQL non e' di per se un linguaggio particolarmente
ostico. diventa terribilmente ostico quando si pretende di
utilizzarlo senza avere una preparazione adeguata, almeno a
livello basic.
la soluzione in genere e' semplice ed alla portata di tutti
con poco sforzo: basta semplicemente studiare prima di agire.
cosa peraltro non particolarmente impegnativa.

tornando a bomba sui query builder grafici, chiudo riferendo
un mio aneddoto personale.
svariati anni or sono mi sono avventurato ad utilizzare i tools
grafici di MS Access per fare una query abbastanza complicata che
coinvolgeva una decina di tavole messe in JOIN e che richiedeva
delle condizioni di aggregazione abbastanza complesse.
ho sudato pazientemente per un'intera mattinata per riuscire a
tracciare tutti i collegamenti grafici necessari spuntando le
varie caselle etc, fino ad ottenere una schermata assolutamente
illeggibile che pareva una ragnatela tutta arruffata, e non sono
neppure riuscito ad ottenere i risultati corretti.
a quel punto ho attivato il pannello SQL e mi sono scritto
a mano una query SQL di alcune decine di righe; in poco
meno di mezz'ora ho finalmente risolto il mio problema :-D


> On Wed, 14 Feb 2018 17:05:48 +0100, Luca Delucchi wrote:
> 2018-02-14 17:03 GMT+01:00 nino formica <ninofor60 a gmail.com>:
>> Io credo che non esiste, ma magari mi sbaglio e vi giro la domanda.
>>
> penso che spatialite gui abbia qualcosa del genere, forse non 
> permette
> di creare query molto complesse ma per imparare dovrebbe essere
> sufficiente
>

> On Wed, 14 Feb 2018 17:12:25 +0100, Totò Fiandaca wrote:
> ​In spatialite_gui, come accennato da Luca, esiste il query/view 
> composer
> (file->advanced) che semplifica parecchio la costruzione delle query 
> e
> delle view.
>

confermo quanto detto da Luca e Toto'; il query builder
di spatialite_gui e' decisamente spartano, ma consente
di auto-generare molte query SQL dei tipi piu' banali
e comuni. ed e' anche un discreto strumento "didattico"
per facilitare l'apprendimento dei primi rudimenti di SQL.

ciao Sandro



Maggiori informazioni sulla lista Gfoss