From 2e78e18d394bf6994fc94764b18c56d4ddc5444d Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Thu, 2 Jul 2015 15:47:43 +0200 Subject: [PATCH] SQLSchema: MySQL Schema update --- schema/mysql-changes/upgrade_23.sql | 51 +++++++++++++++++++++++++ schema/mysql.sql | 59 +++++++++++++---------------- 2 files changed, 78 insertions(+), 32 deletions(-) create mode 100644 schema/mysql-changes/upgrade_23.sql diff --git a/schema/mysql-changes/upgrade_23.sql b/schema/mysql-changes/upgrade_23.sql new file mode 100644 index 00000000..2368a174 --- /dev/null +++ b/schema/mysql-changes/upgrade_23.sql @@ -0,0 +1,51 @@ +DROP TABLE director_datatype; + +CREATE TABLE director_datafield ( + id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + varname VARCHAR(64) NOT NULL, + caption VARCHAR(255) NOT NULL, + description TEXT DEFAULT NULL, + datatype varchar(255) NOT NULL, +-- datatype_param? multiple ones? + format enum ('string', 'json', 'expression'), + PRIMARY KEY (id), + KEY search_idx (varname) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +DROP TABLE icinga_host_field; + +CREATE TABLE icinga_host_field ( + host_id INT(10) UNSIGNED NOT NULL COMMENT 'Makes only sense for templates', + datafield_id INT(10) UNSIGNED NOT NULL, + is_required ENUM('y', 'n') DEFAULT NULL, + PRIMARY KEY (host_id, datafield_id), + CONSTRAINT icinga_host_field_host + FOREIGN KEY host(host_id) + REFERENCES icinga_host (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_host_field_datafield + FOREIGN KEY datafield(datafield_id) + REFERENCES director_datafield (id) + ON DELETE CASCADE + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +DROP TABLE icinga_service_field; + +CREATE TABLE icinga_service_field ( + service_id INT(10) UNSIGNED NOT NULL COMMENT 'Makes only sense for templates', + datafield_id INT(10) UNSIGNED NOT NULL, + is_required ENUM('y', 'n') DEFAULT NULL, + PRIMARY KEY (service_id, datafield_id), + CONSTRAINT icinga_service_field_service + FOREIGN KEY service(service_id) + REFERENCES icinga_service (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_service_field_datafield + FOREIGN KEY datafield(datafield_id) + REFERENCES director_datafield (id) + ON DELETE CASCADE + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/schema/mysql.sql b/schema/mysql.sql index 24ed114d..44973684 100644 --- a/schema/mysql.sql +++ b/schema/mysql.sql @@ -113,12 +113,16 @@ CREATE TABLE director_datalist_entry ( ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -CREATE TABLE director_datatype ( - id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, - datatype_name VARCHAR(255) NOT NULL, - datatype_class VARCHAR(255) NOT NULL, +CREATE TABLE director_datafield ( + id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + varname VARCHAR(64) NOT NULL, + caption VARCHAR(255) NOT NULL, + description TEXT DEFAULT NULL, + datatype varchar(255) NOT NULL, +-- datatype_param? multiple ones? + format enum ('string', 'json', 'expression'), PRIMARY KEY (id), - UNIQUE KEY datatype_name (datatype_name) + KEY search_idx (varname) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE icinga_zone ( @@ -389,23 +393,18 @@ CREATE TABLE icinga_host_inheritance ( CREATE TABLE icinga_host_field ( host_id INT(10) UNSIGNED NOT NULL COMMENT 'Makes only sense for templates', - fieldname VARCHAR(64) NOT NULL, - caption VARCHAR(255) NOT NULL, - datatype_id INT(10) UNSIGNED NOT NULL, --- datatype_param? multiple ones? - default_value TEXT DEFAULT NULL, - format enum ('string', 'json', 'expression'), - PRIMARY KEY (host_id, fieldname), - KEY search_idx (fieldname), + datafield_id INT(10) UNSIGNED NOT NULL, + is_required ENUM('y', 'n') DEFAULT NULL, + PRIMARY KEY (host_id, datafield_id), CONSTRAINT icinga_host_field_host FOREIGN KEY host(host_id) - REFERENCES icinga_host (id) + REFERENCES icinga_host (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT icinga_host_field_datatype - FOREIGN KEY datatype (datatype_id) - REFERENCES director_datatype (id) - ON DELETE RESTRICT + CONSTRAINT icinga_host_field_datafield + FOREIGN KEY datafield(datafield_id) + REFERENCES director_datafield (id) + ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -512,23 +511,18 @@ CREATE TABLE icinga_service_var ( CREATE TABLE icinga_service_field ( service_id INT(10) UNSIGNED NOT NULL COMMENT 'Makes only sense for templates', - fieldname VARCHAR(64) NOT NULL, - caption VARCHAR(255) NOT NULL, - datatype_id INT(10) UNSIGNED NOT NULL, - -- datatype_param? multiple ones? - default_value TEXT DEFAULT NULL, - format enum ('string', 'json', 'expression'), - PRIMARY KEY (service_id, fieldname), - KEY search_idx (fieldname), + datafield_id INT(10) UNSIGNED NOT NULL, + is_required ENUM('y', 'n') DEFAULT NULL, + PRIMARY KEY (service_id, datafield_id), CONSTRAINT icinga_service_field_service - FOREIGN KEY service (service_id) - REFERENCES icinga_service (id) + FOREIGN KEY service(service_id) + REFERENCES icinga_service (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT icinga_service_field_datatype - FOREIGN KEY datatype (datatype_id) - REFERENCES director_datatype (id) - ON DELETE RESTRICT + CONSTRAINT icinga_service_field_datafield + FOREIGN KEY datafield(datafield_id) + REFERENCES director_datafield (id) + ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -558,6 +552,7 @@ CREATE TABLE icinga_hostgroup ( KEY search_idx (display_name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +-- TODO: probably useless CREATE TABLE icinga_hostgroup_inheritance ( hostgroup_id INT(10) UNSIGNED NOT NULL, parent_hostgroup_id INT(10) UNSIGNED NOT NULL,