Newsgroup: it.comp.appl.access
Titolo: strutturare una timeline (solo concetti per le tabelle e le relazioni)

buongiorno a tutti.
Spero di non farvi perdere tempo prezioso ma sono incartato in un dedalo da cui non esco.
Vorrei creare un DB di avvenimenti [fatti] accaduti in una data o in un periodo.
Il problema mi nasce quando cerco di immaginare una linea (argomento) a cui il fatto puo' appartenere.
ES.
 
1/1/1948 - Luigi De Nicola viene eletto Presidente della Repubblica.
 
questo è un fatto, che puo' appartenere a diverse linee temporali : Presidenti della repubblica Italiana, Storia d'Italia, Biografia di De Nicola Luigi, Storia Europea, etc etc.
 
Oggi queste linee, probabilmente, sono conosciute come TAG, ma alla fine si tratta di classificazioni fittizie(soggettive) e, purtroppo, infinite.
 
Quindi ci vedo almeno due tabelle
 
AVVENIMENTI : [idAvven], [dataOperiodo], [fatto]
LINEE       : [idLinea], [descrizione]
 
ed almeno una query a campi incrociati
ELENCO    : [idAvven],[idLinea], [AVVENIMENTI].[fatto], [LINEE].[descrizione]
 
ed ecco il problema, in IMMISSIONE di una biografia esisteranno i fatti: Nasce e Muore, che devono avere una linea già determinata altrimenti risulteranno notizie avulse da qualsiasi personaggio ....
 
Stessa cosa per l'inizio e la fine di una linea. 
Es: Inizio, 476     riferito al Medioevo.
 
Ma certe linee non hanno una dicitura Inizia o Finisce, ma un fatto preciso che magari scatena un periodo : tipo Guerra fredda, oppure Corsa al Nucleare .....
 
LA DOMANDA: cosa usereste per raccogliere questa base dati? (ACCESS, struttura tipo wiki (che non saprei gestire), o altro ?)
 
vi ringrazio per qualsiasi suggerimento
 
Ivan
 
 

Due possibili strade:
 
- il primo "accademico" è quello di progettare le tabelle anagrafica, eventi 
parametrizzati, e quindi una tabella degli eventi temporali; nel modo 
seguente:
 
Anagrafica
1 Rubbia
2 Pluto
 
Evento
1 Presidente Repubblica
2 Premio Nobel
3 Senatore a vita
 
Eventi
1 (Rubbia) 2 (Premio Nobel) 01/01/1986
1 (Rubbia) 3 (Senatore a vita) 01/01/2016
 
e quindi fai i filtri considerando puntualmente i valori di Evento e data.
 
- il secondo tipo "motore di ricerca basato su tag", consente di avere una 
sola tabella dove usi le descrizioni libere su un campo Memo:
 
Eventi
1 (Rubbia) (Premio Nobel per la fisica) 01/01/1986
1 (Rubbia) (Senatore a vita nel Parlamento della Repubblica Italiana) 
01/01/2016
2 (Pluto) (Personaggio di Walt Disney) 01/01/1930
2 (Pluto) (Prima apparizione cinematografica) 01/01/1935
 
e quindi fai i filtri sul campo descrizione con una LIKE del tipo: LIKE "'*" 
& Replace(Nz(Me.Ricerca.Value," ")," ","*") & "*'
 
In entrambi i casi è quasi d'obbligo che la data sia un campo dedicato, a 
parte, e non mescolata con testo che descrive l'evento.
Questo consente di effettuare elaborazioni avanzate tipo estrazione di 
eventi per intervallo e disegno di grafici in stile Project (Gantt) e/o con 
Pivot in Excel
 
La seconda soluzione è piu flessibile perchè l'utente può inserire al volo 
tutte le classificazioni arbitrarie senza per forza parametrizzarle.
Tuttavia si paga il costo delle query LIKE con l'aumentare dei record e la 
lunghezza delle descrizioni (ma prima di riscontrare rallentamenti 
fastidiosi bisogna superare circa i 500.000 record).
 
Ultimamente io uso una soluzione mista:
- i dati stanno su un server come SQL Server o MySQL o Oracle;
- entrambi hanno comandi ottimizzati alternativi al LIKE per le 
interrogazioni velocissime sui campi testuali (es. in MySQL hai indici FULL 
TEXT e costrutto MATCH ... AGAINST);
- creo un campo automatico al momento dell'inserimento dati chiamato 
"Keywords" nel quale elimino caratteri che non servono, ottenendo di fatto 
dei Tag di ricerca;
- uso query Pass-Through che modifico al volo con la stringa di filtro 
passandole al DB server e alla restituzione del recordset lo aggancio alla 
sottomaschera.
 
 
 
"IvanDaBologna"  ha scritto nel messaggio 
news:516df838-1879-4e62...@googlegroups.com...



E' chiaro che qui, noi, useremmo Access & company
Un idraulico, con la stessa efficacia, userebbe la sua cassettiera 
guarnizioni per classificare
Un meccanico userebbe la rastrelliera dei dadi e viti
 
Dal punto di vista del programmatore di database, per le tue ricerche 
non vedrei problema
Se nella 'tabella' avvenimenti ci metti anche il campo 'tag' sei a 
cavallo nel senso che potrai poi eseguire delle interrogazioni per 
avvenimenti:
- entro un certo range di date
- che contengono il tag xxx e/o yyy
- il tutto ordinato per data
 
che credo sia quello che ti serve
Quando si tratta di raccogliere informazioni e poi ricercare, filtrarle, 
ordinarle, un sistema come Access e' molto efficace

Mi sembra una normale relazione molti a molti, e come tutte le relazioni di questo tipo si risolve con una tabella intermedia.
 
LineeTemporali IDLT,Descrizione
Personaggi IDP,Nome
Eventi IDE, Data, Descrizione, IDLT, IDP 
 
In questo esempio è la stessa tabella Eventi che fa da tabella di collegamento.
 
Ciao
Sib

 Sib
 
Caspita ciao Davide... un doveroso saluto.
 
@Alex


Ciao a te :-)