{"id":4134,"date":"2018-01-15T14:54:29","date_gmt":"2018-01-15T14:54:29","guid":{"rendered":"https:\/\/twproject.com\/support\/?page_id=4134"},"modified":"2025-09-02T15:56:02","modified_gmt":"2025-09-02T15:56:02","slug":"struttura-del-database","status":"publish","type":"page","link":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/","title":{"rendered":"Struttura del database"},"content":{"rendered":"<p>Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 e per dare le informazioni essenziali, non copriremo gli schemi completi.<\/p>\n<h2>Dati base del progetto e date<\/h2>\n<p>I dati base del progetto sono nella tabella twk_task. Notare che la colonna \u201cparent\u201d \u00e8 una foreign key che punta alla stessa tabella, e determina la posizione del progetto nell&#8217;albero. I valori ricorsivi dei &#8220;parent&#8221; sono anche salvati (denormalizzati) nel campo \u201cancestorids\u201d per ragioni di performance.<br \/>\nLa tabella twk_taskrelation contiene un record per ogni relazione padre-discendente ed \u00e8 utilizzata per ottimizzare le performances<\/p>\n<h2><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5128\" src=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png\" alt=\"\" width=\"725\" height=\"774\" \/><\/h2>\n<h2>Progetto e assegnazioni<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5129\" src=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/assignments_relations.png\" alt=\"\" width=\"908\" height=\"835\" \/><\/p>\n<p>La relazione pi\u00f9 importante che connette il progetto alle persone \u00e8 l&#8217;assegnazione. La tabella twk_assignment \u00e8 una tabella relazionale che connette il progetto alle risorse (persone) e ai ruoli. Anche tutti i worklog inseriti in Twproject sono sull&#8217;assegnazione. Quindi per trovare i worklog su un progetto, dovrai fare join sull&#8217;assegnazione e da l\u00ec join su worklog. La tabella twk_assignment_data_hist, contiene tutta le storia delle modifiche ai valori delle assegnazioni.<\/p>\n<h2>ToDo<\/h2>\n<p>I ToDo risiedono nella tabella twk_issue. Ogni ToDo \u00e8 in relazione con un task ed \u00e8 eventualmente assegnato ad una risorsa.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5130\" src=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/todo-relations.png\" alt=\"\" width=\"782\" height=\"863\" \/><\/p>\n<p>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<\/p>\n<h2>Agenda<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"display: inline; border-width: 0px;\" title=\"\" src=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2014\/02\/clip_image010.png\" alt=\"\" width=\"642\" height=\"565\" border=\"0\" \/><\/p>\n<p>Ogni oggetto nell&#8217;agenda ha uno schedule e un insieme di partecipanti. Lo schedule \u00e8 direttamente in join, i partecipaneti sonon raccolti con un join su twk_agenda_tar.<br \/>\nSe un evento dell&#8217;agenda \u00e8 anche un meeting, c&#8217;\u00e8 una foreign key alla tabella twk_meeting.<\/p>\n<h2>Risorsa<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"display: inline; border-width: 0px;\" title=\"\" src=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2014\/02\/clip_image0121.png\" alt=\"\" width=\"642\" height=\"714\" border=\"0\" \/><\/p>\n<p>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 \u201ce-mail\u201d) sono conservati in una join tra twk_res_ad e olpl_anagraphicaldata.<\/p>\n<h2>Qual \u00e8 l&#8217;utente registrato?<\/h2>\n<p>Gli utenti registrati di Twproject sono entit\u00e0 \u201cdoppie\u201d: loro sono \u201crisorse\u201d, quindi possono avere assegnazioni, e utenti del sistema, quindi possono fare log in.<\/p>\n<p>Quindi un utente che fa log in \u00e8 un record nella tabella olpl_operator, che \u00e8 in relazione 1-a-1 con un record nella tabella twk_resources.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: 0px; display: inline; margin-right: 0px; border-width: 0px;\" title=\"\" src=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2014\/02\/clip_image013.png\" alt=\"\" width=\"189\" height=\"116\" align=\"right\" border=\"0\" hspace=\"12\" \/><\/p>\n<p>Il record id della risorsa \u00e8 mostrato nell&#8217;interfaccia web nel tab dei dati generali della risorsa.<\/p>\n<p>Il record id dell&#8217;operatore \u00e8 nel tab Sicurezza\/Login.<\/p>\n<p>In quasi tutti i casi ci\u00f2 che \u00e8 necessario filtrare \u00e8 l&#8217;id della risorsa: su ToDo, worklogs, assegnazione.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: 0px; display: inline; margin-right: 0px; border-width: 0px;\" title=\"\" src=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2014\/02\/clip_image0151.jpg\" alt=\"\" width=\"178\" height=\"90\" align=\"right\" border=\"0\" hspace=\"12\" \/><\/p>\n<p>Una eccezione \u00e8 il motore di sottoscrizione.<\/p>\n<h2>Filtrare per area?<\/h2>\n<p>Filtrare per area \u00e8 banale, dato che la maggior parte degli oggetti ha un&#8217;area o una colonna areax per cui filtrare.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 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 \u201cparent\u201d \u00e8 una foreign key che [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3892,"menu_order":28,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-4134","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Struttura del database | Twproject support<\/title>\n<meta name=\"description\" content=\"Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 e per dare le\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Struttura del database | Twproject support\" \/>\n<meta property=\"og:description\" content=\"Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 e per dare le\" \/>\n<meta property=\"og:url\" content=\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/\" \/>\n<meta property=\"og:site_name\" content=\"Twproject support\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/twproject\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-02T15:56:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png\" \/>\n\t<meta property=\"og:image:width\" content=\"725\" \/>\n\t<meta property=\"og:image:height\" content=\"774\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/\",\"url\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/\",\"name\":\"Struttura del database | Twproject support\",\"isPartOf\":{\"@id\":\"https:\/\/twproject.com\/support\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png\",\"datePublished\":\"2018-01-15T14:54:29+00:00\",\"dateModified\":\"2025-09-02T15:56:02+00:00\",\"description\":\"Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 e per dare le\",\"breadcrumb\":{\"@id\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#primaryimage\",\"url\":\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png\",\"contentUrl\":\"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/twproject.com\/support\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Utilizzo avanzato\",\"item\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Import \/ Export\",\"item\":\"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Struttura del database\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/twproject.com\/support\/#website\",\"url\":\"https:\/\/twproject.com\/support\/\",\"name\":\"Twproject support\",\"description\":\"Twproject documentation online\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/twproject.com\/support\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Struttura del database | Twproject support","description":"Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 e per dare le","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/","og_locale":"it_IT","og_type":"article","og_title":"Struttura del database | Twproject support","og_description":"Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 e per dare le","og_url":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/","og_site_name":"Twproject support","article_publisher":"https:\/\/www.facebook.com\/twproject","article_modified_time":"2025-09-02T15:56:02+00:00","og_image":[{"width":725,"height":774,"url":"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png","type":"image\/png"}],"twitter_misc":{"Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/","url":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/","name":"Struttura del database | Twproject support","isPartOf":{"@id":"https:\/\/twproject.com\/support\/#website"},"primaryImageOfPage":{"@id":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#primaryimage"},"image":{"@id":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#primaryimage"},"thumbnailUrl":"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png","datePublished":"2018-01-15T14:54:29+00:00","dateModified":"2025-09-02T15:56:02+00:00","description":"Descriviamo qui la struttura relazionale del database di Twproject. Diamo per assunti i concetti relazionali. Per questioni di leggibilit\u00e0 e per dare le","breadcrumb":{"@id":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#primaryimage","url":"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png","contentUrl":"https:\/\/twproject.com\/support\/wp-content\/uploads\/2018\/01\/task_relations.png"},{"@type":"BreadcrumbList","@id":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/struttura-del-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/twproject.com\/support\/it\/"},{"@type":"ListItem","position":2,"name":"Utilizzo avanzato","item":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/"},{"@type":"ListItem","position":3,"name":"Import \/ Export","item":"https:\/\/twproject.com\/support\/it\/utilizzo-avanzato\/import-export\/"},{"@type":"ListItem","position":4,"name":"Struttura del database"}]},{"@type":"WebSite","@id":"https:\/\/twproject.com\/support\/#website","url":"https:\/\/twproject.com\/support\/","name":"Twproject support","description":"Twproject documentation online","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/twproject.com\/support\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"}]}},"_links":{"self":[{"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/pages\/4134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/comments?post=4134"}],"version-history":[{"count":0,"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/pages\/4134\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/pages\/3892"}],"wp:attachment":[{"href":"https:\/\/twproject.com\/support\/it\/wp-json\/wp\/v2\/media?parent=4134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}