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 task e date

I dati base del task sono nella tabella twk_task. Notare che la colonna “parent” è una foreign key che punta alla stessa tabella, e determina la posizione del task nell’albero. I valori ricorsivi dei “parent” sono anche salvati (denormalizzati) nel campo “ancestorids” per ragioni di performance.

Date del progetto / task: l’inizio, fine e durata del task vengono rilevati da una join sulla tabella olpl_schedule, rispettivamente in startx, endx e duration.

Task e assegnazioni

La relazione più importante che connette i task alle persone è l’assegnazione. La tabella twk_assignment è una tabella relazionale che connette i task alle risorse (persone) e ai ruoli. Anche tutti i worklog inseriti in Twprojec sono sull’assegnazione. Quindi per trovare i worklog su un task, dovrai fare join sull’assegnazione e da lì join su worklog.

Issue

Le issue possono essere senza risorsa – solo su un task, o senza task – e poi essere un todo su una risorsa. Ma normalmente hanno una risorsa e un task, che indirettamente più delle volte indica un’assegnazione, ed è lì che vanno i worklog.

Nota che c’è una referenza denormalizzata ai worklog, e la tabella issue_history dove è conservata la storia dei cambiamenti della issue.

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 issue, 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.