Struttura del database

Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilità e per dare le informazioni essenziali, non copriremo gli schemi completi.

Dati base del progetto e date

I dati base del progetto sono nella tabella twk_task. Notare che la colonna “parent” è una foreign key che punta alla stessa tabella, e determina la posizione del progetto nell’albero. I valori ricorsivi dei “parent” sono anche salvati (denormalizzati) nel campo “ancestorids” per ragioni di performance.
La tabella twk_taskrelation contiene un record per ogni relazione padre-discendente ed è utilizzata per ottimizzare le performances

Progetto e assegnazioni

La relazione più importante che connette i progetto alle persone è l’assegnazione. La tabella twk_assignment è una tabella relazionale che connette i progetto alle risorse (persone) e ai ruoli. Anche tutti i worklog inseriti in Twproject sono sull’assegnazione. Quindi per trovare i worklog su un progetto, dovrai fare join sull’assegnazione e da lì join su worklog. La tabella twk_assignment_data_hist, contiene tutta le storia delle modifiche ai valori delle assegnazioni.

ToDo

I ToDo risiedono nella tabella twk_issue. Ogni ToDo è in relazione con un task ed è eventualmente assegnato ad una risorsa.

I worklog relativi ad un todo, saranno sempre associati ad una Assegnazione, e manterranno un link al todo che li ha generati. La tabella twk_issue_history permette di ricostruire gli stati, le date e gli assegnatari di un determinato todo

Agenda

Ogni oggetto nell’agenda ha uno schedule e un insieme di partecipanti. Lo schedule è direttamente in join, i partecipaneti sonon raccolti con un join su twk_agenda_tar.
Se un evento dell’agenda è anche un meeting, c’è una foreign key alla tabella twk_meeting.

Risorsa

Le risorse sono ovviamente coinvolte in molte tabelle di Twproject; qui mostriamo solo le dipendenze dirette su questa tabella. Nota che i dati base della risorsa (come “e-mail”) sono conservati in una join tra twk_res_ad e olpl_anagraphicaldata.

Qual è l’utente registrato?

Gli utenti registrati di Twproject sono entità “doppie”: loro sono “risorse”, quindi possono avere assegnazioni, e utenti del sistema, quindi possono fare log in.

Quindi un utente che fa log in è un record nella tabella olpl_operator, che è in relazione 1-a-1 con un record nella tabella twk_resources.

Il record id della risorsa è mostrato nell’interfaccia web nel tab dei dati generali della risorsa.

Il record id dell’operatore è nel tab Sicurezza/Login.

In quasi tutti i casi ciò che è necessario filtrare è l’id della risorsa: su ToDo, worklogs, assegnazione.

Una eccezione è il motore di sottoscrizione.

Filtrare per area?

Filtrare per area è banale, dato che la maggior parte degli oggetti ha un’area o una colonna areax per cui filtrare.