[Dizionario] Prova DB -> XML
Andrea Sivieri
andrea.sivieri a libero.it
Mer 25 Set 2002 22:29:59 CEST
> Riassumento il mio parere e' questo:
>
> - Database di raccolta dati (gestione) -> PostgreSQL
> - Database operativo -> file indicizzato, Berkeley DB o XML
L'XML, se non indicizzato, e` piu` adatto all'interscambio
di dati, che non all'estrazione real-time di parole e attributi
collegati. Lo affiancherei quindi piu` che altro al database SQL
per la raccolta e l'interscambio di dati, visto anche che e` possibile
in modo banale esportare una tabella di database sottoforma di XML
e viceversa. Per spostare grandi blocchi di dati (anche tra
db completamente diversi) e` molto comodo passare
per l'XML, invece che inserirli ad uno ad uno, ad esempio.
Quindi qualcosa tipo:
- raccolta dati: interfaccia web <-> database sql <-> XML
- database operativo: file indicizzato | Berkeley DB | formato MySpell |
Embedded-DB | ...
Il flusso dati sarebbe in definitiva cosi` (il simbolo "|" indica "OR"):
(Interfaccia Web | XML) -> SQL-DB -> XML -> (file indicizzato | E-DB | ...)
Al posto delle frecce ci sarebbero dei programmi di trasformazione,
ma in alcuni casi ci sono gia` dei buoni ausili pronti per sperimentare
qualche prototipo. Ad esempio il phpMyAdmin puo` fare da interfaccia
web generica per il MySQL e permette anche di esportare in XML le tabelle.
Il phppgadmin dovrebbe fare cose simili per il PostgreSQL, ma non
l'ho ancora provato: http://phppgadmin.sourceforge.net/?page=home
E` vero comunque che queste interfaccie non essendo specializzate
sul problema, mancano di molte cose che potrebbero essere utili...
Visto che oggi ero particolarmente ispirato ho provato a creare
una piccola tabella di prova e a popolarla.
Questa e` una definizione che ricalca un po' i miei ragionamenti
del pomeriggio (lo so che i tipi sono stati dati in modo un po'
grossolano, ma questa e` solo una prova. L'attributo category
potrebbe essere un ENUM ad esempio):
#
# Table structure for table `base_forms`
#
CREATE TABLE base_forms (
word varchar(255) NOT NULL default '',
omonim int(11) NOT NULL default '0',
comment varchar(255) NOT NULL default '',
category varchar(63) NOT NULL default '',
class varchar(63) NOT NULL default ''
) TYPE=MyISAM;
E` da considerare chiave della tabella la combinazione
dell'attributo word con il codice omonim, perche` ad occhio
credo che esistano parole base omonime con forme derivate
che seguono regole diverse (pero` non mi vengono in mente
esempi).
Questo e` quello che si ottiene esportando in XML da
phpMyAdmin il database di prova "diz" che ho popolato
con un po' di forme base:
<?xml version="1.0" encoding="ISO-8859-1"?>
<diz>
<!-- table base_forms -->
<base_forms>
<word>amare</word>
<omonim>0</omonim>
<comment/>
<category>verb</category>
<class>-are</class>
</base_forms>
<base_forms>
<word>cercare</word>
<omonim>0</omonim>
<comment>questo e` solo un commento</comment>
<category>verb</category>
<class>-care</class>
</base_forms>
<base_forms>
<word>seguire</word>
<omonim>0</omonim>
<comment/>
<category>verb</category>
<class>-ire</class>
</base_forms>
<base_forms>
<word>finire</word>
<omonim>0</omonim>
<comment/>
<category>verb</category>
<class>-ire-isco</class>
</base_forms>
<base_forms>
<word>contrarre</word>
<omonim>0</omonim>
<comment/>
<category>verb</category>
<class>-trarre</class>
</base_forms>
<base_forms>
<word>detrarre</word>
<omonim>0</omonim>
<comment/>
<category>verb</category>
<class>-trarre</class>
</base_forms>
<base_forms>
<word>amo</word>
<omonim>0</omonim>
<comment/>
<category>noun</category>
<class>m:-o-i</class>
</base_forms>
<base_forms>
<word>circo</word>
<omonim>0</omonim>
<comment/>
<category>noun</category>
<class>m:-co-chi</class>
</base_forms>
<base_forms>
<word>amico</word>
<omonim>0</omonim>
<comment/>
<category>noun</category>
<class>m:-co-ci</class>
</base_forms>
<base_forms>
<word>libro</word>
<omonim>0</omonim>
<comment/>
<category>noun</category>
<class>m:-o-i</class>
</base_forms>
<base_forms>
<word>cittą</word>
<omonim>0</omonim>
<comment/>
<category>noun</category>
<class>f:INV</class>
</base_forms>
<base_forms>
<word>bar</word>
<omonim>0</omonim>
<comment/>
<category>noun</category>
<class>m:INV</class>
</base_forms>
<base_forms>
<word>allegro</word>
<omonim>0</omonim>
<comment/>
<category>adjective</category>
<class>-o-i-a-e</class>
</base_forms>
<base_forms>
<word>unico</word>
<omonim>0</omonim>
<comment/>
<category>adjective</category>
<class>-co-ci</class>
</base_forms>
<base_forms>
<word>carico</word>
<omonim>0</omonim>
<comment/>
<category>adjective</category>
<class>-co-chi</class>
</base_forms>
<base_forms>
<word>lungo</word>
<omonim>0</omonim>
<comment/>
<category>adjective</category>
<class>-go-ghi</class>
</base_forms>
<base_forms>
<word>felice</word>
<omonim>0</omonim>
<comment/>
<category>adjective</category>
<class>-e-i</class>
</base_forms>
</diz>
L'esempio non e` eccezionale, ma magari puo` favorire altre idee... :-)
Ciao,
Andrea
Maggiori informazioni sulla lista
Dizionario