Salve
sto realizzando un portale che prevede la presenza di numerose tipologie di "items" (eventi, corsi,docenti, materie, esami, documenti, allievi, ecc., in tutto circa 30 o più), ciascuna caratterizzata da un gruppo specifico di dati (es. eventi: data inizio, data fine, titolo, descrizione).
Tutti questi items sono ovviamente correlati fra di loro in vario modo (corsi > materie > docenti, ma anche eventi > docenti e eventi > materie, docenti < esami > documenti, e così via)
Se usassi 1 tabella di anagrafica per ciascun tipo di item, dovrei avere n-fattoriale tabelle di correlazione, ovvero 30! = 2,6525285981219105863630848e+32 tabelle (se la calcolatrice di winzozz non sbaglia).
Inoltre, se cercassi 1 dato particolare (es tutti gli item che hanno data di pubblicazione 30 maggio 2008) dovrei fare una union di query su tutte le tabelle i cui item contengono il dato "data_pubblicazione".
Una soluzione potrebbe essere una forte standardizzazione dei nomi dei campi, in modo da poter parametrizzare le query.
Ma data l'enorme varietà di items pensavo di descrivere ciascun item tramite un XML e memorizzarlo in un blob di un'unica tabella MySQL di anagrafica, "items", contenente anche l'ID dell'item e p.es. lo stato attivo/non attivo.
La correlazione verrebbe gestita da un'altra tabella MySQL: ID item1 | ID item2
a questo punto, supponiamo che tutti gli item che posseggono tale proprietà contengano il nodo <data_pubblicazione value=aaaammgg /> (o <data_pubblicazione>aaaammgg</data_pubblicazione>, non so quale sia meglio). QUando devo p.es. cercare un item con data pubblicazione 30 maggio 2008, cosa dovrei fare?
una query full-text?
una query like?
esistono altri sistemi per effettuare subquery all'interno di xml?
l'xml dentro blob di mysql non è una buona soluzione?
una alternativa è un misto: avere 30 anagrafiche ma 1 unica tabella di correlazione, in cui indico oltre agli ID degli item correlati anche le relative tabelle (o le tipologie), in modo da capire a che coppia di tabelle appartiene ciascuna coppia di item correlati.
attendo vostri pareri!![]()