Publicado el 22 de Julio del 2018
799 visualizaciones desde el 22 de Julio del 2018
141,0 KB
9 paginas
Creado hace 17a (02/11/2007)
Inventario de una red IP orientado en CMSI
Anexo capítulo 3
En este anexo vamos a presentar los ficheros cmsip.sql y data.sql procedente de la
implementación del estándar CMSI en una base de datos PostgreSQL.
Presentamos a continuación el fichero cmsip.sql que es el que define la estructura
básica de tablas y las relaciones que hay entre ellas.
-- Tabla que indica la versión de la base de datos útil para actualizaciones
CREATE TABLE eneo_asset_version (
version varchar(255) NOT NULL,
PRIMARY KEY (version)
);
-- Tabla que contiene el árbol de categoría, cada elemento se identifica por un id, que debe
ser único
CREATE TABLE category_tree (
id serial NOT NULL,
name varchar(255) default NULL,
PRIMARY KEY (id)
);
-- Tabla que contiene los nodos del árbol de categorías. Los elementos que contiene son:
-- node_tag: Es una etiqueta identificativa del nodo
-- category_tree_id: es el identificador del árbol de categoría al que pertenece
-- parents: identifca el nodo_tag padre, en el caso de que no tenga padre, su valor será
NULL
-- name: nombre del nodo.
-- descr: descripción del nodo.
CREATE TABLE category_node (
node_tag varchar(255) NOT NULL,
category_tree_id int8 NOT NULL default 0,
parents varchar(255) default NULL,
name varchar(255) NOT NULL,
descr varchar(255) default NULL,
PRIMARY KEY (node_tag)
);
ALTER TABLE category_node
ADD FOREIGN KEY (category_tree_id) REFERENCES category_tree (id) ON
DELETE CASCADE,
ADD FOREIGN KEY (parents) REFERENCES category_node (node_tag) ON DELETE
CASCADE;
-- Tabla family, contiene todas las familias dentro de un nodo, sus columnas son:
-- family_tag: Es el identificador de la familia.
-- node_tag: Es el identificador del nodo al que pertenece la familia
-- name: Nombre de la familia
-- descr: Descripción de la familia
-- grandparents: Es el identificador del nodo principal al que pertenece la familia
CREATE TABLE family (
family_tag serial NOT NULL,
node_tag varchar(255) NOT NULL,
name varchar(255) NOT NULL,
descr varchar(255) default NULL,
grandparents varchar(255) NOT NULL,
PRIMARY KEY (family_tag)
);
49
Proyecto Fin de Carrera
ALTER TABLE family
ADD FOREIGN KEY (node_tag) REFERENCES category_node (node_tag) ON DELETE
CASCADE,
ADD FOREIGN KEY (grandparents) REFERENCES category_node (node_tag) ON
DELETE CASCADE;
-- Tabla que contiene los formatos gramaticales de los atributos
-- id: Identificador único de una expresión gramatical
-- grammar: Expresión gramatical, dado por expresiones regulares
-- name: Nombre de la expresión gramatical.
-- descr: Descripción de la expresión gramatical
CREATE TABLE grammar (
id serial NOT NULL,
grammar varchar(255) NOT NULL,
name varchar(255) NOT NULL,
descr varchar(255) default NULL,
PRIMARY KEY (id)
);
-- Tabla que contiene el tipo de definición de un atributo, este puede venir dado por 2 tipos
diferentes:
-- nodes: El atributo hereda el mismo tipo de definición que los atributos de otro nodo.
-- grammar: El tipo de definición de un atributo viene dado por una expresión gramatical
CREATE TABLE type_def (
type_id varchar(255) NOT NULL,
descr varchar(255) default NULL,
nodes int8 default NULL,
grammar int8 default NULL,
PRIMARY KEY (type_id)
);
ALTER TABLE type_def
ADD FOREIGN KEY (grammar) REFERENCES grammar (id) ON DELETE CASCADE;
-- Tabla value_list contiene la lista de valores que puede tener un atributo, la definición de
estos atributos viene dado por un identificador hacia la tabla anterior
CREATE TABLE value_list (
value_tag varchar(255) NOT NULL,
type_id varchar(255) NOT NULL,
name varchar(255) NOT NULL,
descr varchar(255) default NULL,
PRIMARY KEY (value_tag, type_id)
);
ALTER TABLE value_list
ADD FOREIGN KEY (type_id) REFERENCES type_def (type_id) ON DELETE
CASCADE;
-- Tabla family_attr, contiene el formato gramatical de las familias, sus columnas son:
-- attr_id: Identificador del atributo de familia
-- type_id: Identificador del tipo de definición
-- name: Nombre del atributo de familia
-- descr: Descripción del atributo de familia
CREATE TABLE family_attr (
attr_id serial NOT NULL,
type_id varchar(255) NOT NULL,
name varchar(255) NOT NULL,
descr varchar(255) default NULL,
PRIMARY KEY (attr_id)
);
ALTER TABLE family_attr
ADD FOREIGN KEY (type_id) REFERENCES type_def (type_id) ON DELETE
CASCADE;
50
Inventario de una red IP orientado en CMSI
-- Tabla de expresión, contiene las expresiones regulares que clasifican la información de
inventario.
-- id: Identificador de la expresion regular
-- grammar: expresion regular
-- family_tag: identificador de la familia de productos al que pertenece
CREATE TABLE expression (
id serial NOT NULL,
grammar varchar(1000) NOT NULL,
family_tag int8 NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE expression
ADD FOREIGN KEY (family_tag) REFERENCES family (family_tag) ON DELETE
CASCADE;
-- Tabla family_attr_value, contiene los valores de los atributos de las familias
-- id: Identificador único del valor
-- node_tag: Identificador del nodo
-- family_tag: Identificador de la familia
CREATE TABLE family_attr_value (
id serial NOT NULL,
node_tag varchar(255) NOT NULL,
family_tag int8 NOT NULL,
attr_id int8 NOT NULL,
value varchar(255) NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE family_attr_value
ADD FOREIGN KEY (node_tag) REFERENCES category_node (node_tag) ON DELETE
CASCADE,
ADD FOREIGN KEY (attr_id) REFERENCES family_attr (attr_id) ON DELETE
CASCADE,
ADD FOREIGN KEY (family_tag) REFERENCES family (family_tag) ON DELETE
CASCADE;
-- Tabla probes, contiene la información de las sondas de las cuales recibe información
-- id: Identificador único de la sonda
-- ip: Dirección IP de la sonda
-- date_update: Último instante de tiempo en el cual se recibió información de dicha sonda.
-- name: Nombre de red de la sonda, si no tiene ninguno coincide con la dirección IP.
CREATE TABLE probes (
id serial NOT NULL,
ip INET NOT NULL,
date_update timestamptz,
name varchar(255) NOT NULL,
PRIMARY KEY (id)
);
-- Tabla users, contiene información sobre los usuarios los cuales tienen accesos a ciertas
-- sondas, existe el usuario de base de datos, es el que tiene acceso a todas las sondas.
-- Name: nombre del usuario
-- read_write: Booleano que indica el permiso del usuario
CREATE TABLE users (
name varchar(255) NOT NULL,
read_write boolean DEFAULT false,
PRIMARY KEY (name)
);
51
Proyecto Fin de Carrera
-- La tabla probes_users relaciona los usuarios con las sondas a la que tiene acceso
CREATE TABLE probes_users (
id serial NOT NULL,
users varchar(255) NOT NULL,
probes serial NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE probes_users
ADD FOREIGN KEY (probes) REFERENCES probes (id) ON DELETE CASCADE,
ADD FOREIGN KEY (users) REFERENCES users (name) ON DELETE CASCADE;
-- Tabla hosts, contiene las direcciones IP de todos los equipos que se han detectado
-- a través de las sondas.
-- id: Identificador único.
-- ip: Dirección IP.
-- mac: Dirección Mac.
-- name: Nombre del equipo, en caso de que no tenga, coincide con la dirección IP.
-- date_update: Último instante del cual se tiene información.
-- probes: sonda que detecto dicho equipo.
CREATE TABLE hosts (
id serial NOT NULL,
ip INET NOT NULL,
mac MACADDR default NULL,
name varchar(255) NOT NULL,
date_update timestamptz,
probes serial NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE hosts
ADD FOREIGN KEY (probes) REFERENCES probes (id) ON DELETE CASCADE;
-- Tabla product, contiene todos los productos de la jerarquía.
-- product_tag: Etiqueta identificativa del producto.
-- family_tag: familia a la que pertenece dicho producto.
-- probes: sonda que detectó dicho producto.
-- hosts: Identificador del equipo detectado.
CREATE TABLE product (
product_tag serial NOT NULL,
family_tag int8 NOT NULL,
probes int8 NOT NULL,
hosts int8 NOT NULL,
PRIMARY KEY (product_tag)
);
ALTER TABLE product
ADD FOREIGN KEY (family_tag) REFERENCES family (family_tag) ON DELETE
CASCADE,
ADD FOREIGN KEY (probes) REFERENCES probes(id) ON DELETE CASCADE,
ADD FOREIGN KEY (hosts) REFERENCES hosts (id) ON DELETE CASCADE;
-- Tabla product_attr, contiene información sobre los atributos de los datos de productos
-- que se detectan
-- attr_id: Identificador único del atributo.
-- type_id: Identificador de la expresión gramatical que sigue.
-- name: Nombre del atributo.
-- descr: Descripción del atributo.
CREATE TABLE product_attr (
attr_id serial NOT NULL,
type_id varchar(255) NOT NULL,
52
Inventario de una red IP orientado en CMSI
name varchar(255) NOT NULL,
descr varchar(255) default NULL,
PRIMARY KEY (attr_id)
);
ALTER TABLE product_attr
ADD FOREIGN KEY (type_id) REFERENCES type_def (type_id) ON DELETE
CASCADE;
-- Tabla product_attr_value, contiene los valores de los atributos de productos
-- id: Identificador único del valor.
-- family_tag: Identificador de la familia.
-- producto_tag: Identificador del producto.
-- probes: Identificador de la sonda.
-- attr_id: Identificador del tipo de formato que tiene dicho atributo
-- value: Valor del atributo.
CREATE TABLE product_attr_value (
id serial NOT NULL,
family_tag int8 NOT NULL,
product_tag int8 NOT NULL,
probes int8 NOT NULL,
attr_id int8 NOT NULL,
value varchar(255) NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE product_attr_value
ADD FOREIGN KEY (family_tag) REFERENCES family (family_tag) ON DELETE
CASCADE,
ADD FOREIGN KEY (product_tag) REFERENCES product (product_tag) ON DELETE
CASCADE,
ADD FOREIGN KEY (probes) REFERENCES probes (id) ON DELETE CASCADE,
ADD FOREIGN KEY (attr_id) REFERENCES product_attr (attr_id) ON DELETE
CASCADE;
-- Tabla attributes,
Comentarios de: Inventario de una red IP orientado en CMSI (0)
No hay comentarios