Il modello ER permette di capire la struttura delle tabelle che compongono gli strumenti di openDCN.
Nota:
in ogni schema vengono riportate solo le chiavi primarie e gli attributi più utili nell'identificare le relazioni tra le entità.
Di seguito al modello verranno riportati i codici SQL utilizzati per creare le tabelle all'interno del database del sistema.
Le entità evidenziate in azzurro sono quelle principali/fondamentali; quelle evidenziate in verde (con il doppio bordo) rappresentano i sottoinsiemi degli strumenti agenda, meeting, consultazione certificata, discussione informata e delle risorse.
Infine la tabella wiki_documents è evidenziata in rosso perchè rappresenta l'insieme delle tabelle ereditate dal sistema di wiki.
SQL delle tabelle:
USERS
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL auto_increment, `username` varchar(255) NOT NULL default '', `password` varchar(36) NOT NULL default '', `first_name` varchar(255) default '', `last_name` varchar(255) default '', `email` varchar(255) NOT NULL default '', `showemail` tinyint(1) NOT NULL default '0', `admin` tinyint(1) NOT NULL default '0', `active` tinyint(1) NOT NULL default '0', `created` datetime default NULL, `modified` datetime default NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
GEOMAP - Caratteristiche della mappa utilizzata e riferimento allo strumento che la utilizza.
CREATE TABLE IF NOT EXISTS `geomap` ( `id` int(10) unsigned NOT NULL auto_increment, `label` mediumtext collate utf8_unicode_ci, `boundingBox` geometry NOT NULL, `owner` mediumtext collate utf8_unicode_ci NOT NULL, `owner_id` int(11) NOT NULL, `maptype` mediumtext collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
GROUP USERS
CREATE TABLE IF NOT EXISTS `groups_users` ( `group_id` int(10) unsigned NOT NULL default '0', `user_id` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`group_id`,`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
GROUPS
CREATE TABLE IF NOT EXISTS `groups` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(45) collate latin1_general_ci NOT NULL default '', `description` text collate latin1_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
RATING - Contiene le votazioni fatte dagli utenti registrati e non.
CREATE TABLE IF NOT EXISTS `rating` ( `id` int(11) NOT NULL auto_increment, `owner` varchar(255) NOT NULL, `owner_id` int(11) NOT NULL, `agreement` int(11) default NULL, `relevance` int(11) default NULL, `user_id` int(11) NOT NULL, `anonymous_id` int(11) NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
AVATARS
CREATE TABLE IF NOT EXISTS `avatars` ( `id` int(11) NOT NULL auto_increment, `user_id` int(11) default NULL, `size` int(11) default NULL, `type` varchar(255) default NULL, `width` int(11) default NULL, `height` int(11) default NULL, `created` datetime NOT NULL default '0000-00-00 00:00:00', `modified` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
BLOCKSETS - Caratteristiche del blockset che andrà a formare la struttura della pagina.
CREATE TABLE IF NOT EXISTS `blocksets` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(64) NOT NULL default '', `description` text character set latin1 collate latin1_general_ci NOT NULL, `template` varchar(32) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
PATHS - Tabella che raccoglie l'indirizzo relativo ad ogni blockset.
CREATE TABLE IF NOT EXISTS `paths` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL default '', `blockset_id` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
BLOCKSETS BLOCKS
CREATE TABLE IF NOT EXISTS `blocksets_blocks` ( `blockset_id` int(10) unsigned NOT NULL auto_increment, `area` varchar(32) NOT NULL default '', `weight` smallint(5) unsigned NOT NULL default '0', `block_id` int(10) unsigned NOT NULL default '0', PRIMARY KEY USING BTREE (`blockset_id`,`block_id`,`area`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
BLOCKS
CREATE TABLE IF NOT EXISTS `blocks` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(64) NOT NULL default '', `description` text character set latin1 collate latin1_general_ci NOT NULL, `owner` varchar(64) NOT NULL default '', `content_type` varchar(64) NOT NULL default '0', `content_id` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ROLES - Nome e descrizione dei ruoli affidabili agli utenti.
CREATE TABLE IF NOT EXISTS `roles` ( `id` int(10) unsigned NOT NULL auto_increment, `owner` varchar(255) NOT NULL, `object` varchar(255) NOT NULL, `role` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `type_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
MENU
CREATE TABLE IF NOT EXISTS `menu` ( `id` int(11) NOT NULL auto_increment, `parent` int(11) NOT NULL default '0', `left` int(11) NOT NULL default '0', `right` int(11) NOT NULL default '0', `title` varchar(64) default NULL, `link` varchar(255) default NULL, `owner` varchar(64) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
PERMISSIONS
CREATE TABLE IF NOT EXISTS `permissions` ( `id` int(10) unsigned NOT NULL auto_increment, `owner` varchar(45) NOT NULL default '', `subject` varchar(45) NOT NULL default '', `action` varchar(45) NOT NULL default '', `object` varchar(45) NOT NULL default '', `weight` smallint(5) unsigned NOT NULL default '0', `grant` tinyint(1) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CONTENTS
CREATE TABLE IF NOT EXISTS `contents` ( `id` int(11) NOT NULL auto_increment, `title` text, `content` text, `visible` tinyint(4) NOT NULL default '0', `enable_html` tinyint(4) NOT NULL default '0', `strip_tags` tinyint(4) NOT NULL default '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
WIKI DOCUMENTS - Informazioni sui documenti inseriti nel wiki.
CREATE TABLE IF NOT EXISTS `wiki_documents` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL, `status` tinyint(3) unsigned NOT NULL, `tool` varchar(45) NOT NULL, `tool_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
SUBSCRIBERS - Tabella che racchiude gli utenti che hanno sottoscritto la notifica di messaggi.
CREATE TABLE IF NOT EXISTS `subscribers` ( `id` int(10) unsigned NOT NULL auto_increment, `owner` text NOT NULL, `subject` text NOT NULL, `action` text NOT NULL, `owner_id` text NOT NULL, `object` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
LOGS - Tabella che registra i movimenti degli utenti.
CREATE TABLE IF NOT EXISTS `logs` ( `id` int(10) unsigned NOT NULL auto_increment, `owner` varchar(45) NOT NULL, `subject` varchar(255) NOT NULL, `action` varchar(255) NOT NULL, `object` varchar(255) NOT NULL, `path` varchar(255) NOT NULL, `created` datetime NOT NULL, `message` text NOT NULL, `type` varchar(45) NOT NULL, `ip` varchar(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
TEXTS
CREATE TABLE IF NOT EXISTS `texts` ( `id` int(11) NOT NULL auto_increment, `name` text NOT NULL, `text` text NOT NULL, `date_creation` datetime NOT NULL, `date_modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `language` varchar(3) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
TOKENS
CREATE TABLE IF NOT EXISTS `tokens` ( `id` int(11) NOT NULL auto_increment, `token` char(32) character set utf8 collate utf8_unicode_ci NOT NULL, `user_id` int(11) NOT NULL, `expiration` int(10) unsigned NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `user_id` (`user_id`), UNIQUE KEY `token` (`token`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
VARIABLES
CREATE TABLE IF NOT EXISTS `variables` ( `id` int(10) unsigned NOT NULL auto_increment, `owner` varchar(45) NOT NULL, `name` varchar(255) NOT NULL, `value` text NOT NULL, `type` varchar(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;