Salve a tutti,
vorrei costruire un DB su spatialite relativo ad un parco naturalistico: in questa area umida, in ogni stagno sono presenti diverse specie animali e vegetali e spesso alcune di queste specie sono presenti in uno o pochi stagni e assenti in tutti gli altri. Agli scopi dello studio è sufficiente avere un id per ogni stagno collegato ad una colonna geometry con le coordinate del suo centroide, e sin qui ci siamo: il problema è che non so come fare per quelle che forse impropriamente ho chiamato matrici presenza/assenza. Potreste indicarmi qual'è il modo corretto per affrontare il problema in teoria ed in pratica con Spatialite? Vi ringrazio anticipatamente, Beppe |
On Tue, 16 Sep 2014 03:48:01 -0700 (PDT), Beppe wrote:
> Salve a tutti, > vorrei costruire un DB su spatialite relativo ad un parco > naturalistico: in > questa area umida, in ogni stagno sono presenti diverse specie > animali e > vegetali e spesso alcune di queste specie sono presenti in uno o > pochi > stagni e assenti in tutti gli altri. Agli scopi dello studio è > sufficiente > avere un id per ogni stagno collegato ad una colonna geometry con le > coordinate del suo centroide, e sin qui ci siamo: il problema è che > non so > come fare per quelle che forse impropriamente ho chiamato matrici > presenza/assenza. > Potreste indicarmi qual'è il modo corretto per affrontare il problema > in > teoria ed in pratica con Spatialite? > almeno a prima vista questo problema non presenta nessun aspetto specificamente legato a SQLite oppure a Spatialite. e' piuttosto un problema generico di disegno delle basi dati relazionali. io personalmente lo affronterei piu' o meno giostrando su tre tavole: a) "stagni" id_stagno INTEGER PRIMARY KEY, .... qualsiasi altro attributo relativo allo stagno, ivi compresa un'eventuale geometria .... b) "specie" id_specie INTEGER PRIMARY KEY, ... nome generico e specifico (latino), nome volgare italiano etc ... c) "presenze" CREATE TABLE presenze ( id_stagno INTEGER NOT NULL, id_specie INTEGER NOT NULL, CONSTRAINT pk_pres PRIMARY KEY (id_stagno, id_specie), CONSTRAINT fk_pres_stagno FOREIGN KEY (id_stagno) REFERENCES stagni (id_stagno), CONSTRAINT fk_pres_specie FOREIGN KEY (id_specie) REFERENCES specie (id_specie)); CREATE INDEX idx_pres_rev (id_specie, id_stagno); n.b.: vanno caricate esclusivamente le presenza confermate; le assenza verranno totalmente ignorate. a questo punto potrebbe essere utile definire qualche VIEW di supporto: CREATE VIEW stagni_aux_1 AS SELECT a.id_stagno AS id_stagno, ... altri attributi stagno ..., b.id_specie AS id_specie, ... altri attributi specie ... FROM presenze AS x JOIN stagni AS a ON (x.id_stagno = a.id_stagno) JOIN specie AS b ON (x.id_specie = b.id_specie); SELECT * FROM stagni_aux WHERE id_stagno = 1 ORDER BY id_specie; p.es. questa prima query ti torna l'elenco ordinato delle specie presenti nello stagno 1. SELECT * FROM stagni_aux WHERE id_specie = 1 ORDER BY id_stagno; questa seconda query ti torna invece l'elenco di tutti gli stagni dove vive la specie 1. N.B.: con questa VIEW di esempio non puoi pero' mai sapere quali sono le specie che *non* vivono in un determinato stagno, oppure gli stagni in cui una determinata specie e' assente. se ti interessa anche rilevare esplicitamente le asssenze oltre che le presenze puoi comunque giocare di LEFT JOIN ... non e' particolarmente complesso. auguri e buon divertimento ;-) ciao Sandro _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666+40 iscritti al 5.6.2014 |
Il giorno Mon, 22 Sep 2014 19:32:36 +0200
[hidden email] ha scritto: ciao, > On Tue, 16 Sep 2014 03:48:01 -0700 (PDT), Beppe wrote: > > Salve a tutti, > > ....... > > come fare per quelle che forse impropriamente ho chiamato matrici > > presenza/assenza. > > Potreste indicarmi qual'è il modo corretto per affrontare il > > problema in > > teoria ed in pratica con Spatialite? > > > > almeno a prima vista questo problema non presenta nessun aspetto > specificamente legato a SQLite oppure a Spatialite. > ........ > c) "presenze" > > CREATE TABLE presenze ( > ........ > CREATE INDEX idx_pres_rev (id_specie, id_stagno); > > n.b.: vanno caricate esclusivamente le presenza confermate; > le assenza verranno totalmente ignorate. il problema è modellabile con una matrice cartesiana sparsa, probabilmente senza nemmeno caratterizzazioni di banda, quindi difficile da trattare; se la tua infrastruttura di lavoro è un db relazionale, il suggerimento mi sembra azzeccato; questo se mai c'era bisogno di una conferma all'opinione di Alessandro (si parva magnibus licet parere) :-) > ciao Sandro ciao, giuliano _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666+40 iscritti al 5.6.2014 |
In reply to this post by a.furieri
Grazie Sandro,
il tuo "buon divertimento" è appropriato: nata come esigenza professionale, al pari dei GIS, i database per me stanno diventando una vera e propria passione! ![]() Beppe |
Free forum by Nabble | Edit this page |