
CREATE TABLE apex_usuario_tipodoc
(	
	usuario_tipodoc				varchar(10)		NOT NULL,
	descripcion						varchar(40)		NOT NULL,
	CONSTRAINT	 apex_usuario_tipodoc_pk 	 PRIMARY	KEY ( usuario_tipodoc )
) ENGINE=InnoDB;

CREATE TABLE apex_usuario
(	
	usuario							varchar(60)		NOT NULL,
	clave							varchar(128)	NOT NULL,
	nombre							varchar(255)	NULL,
	usuario_tipodoc					varchar(10)		NULL,
	pre								varchar(2)		NULL,
	ciu								varchar(18)		NULL,
	suf								varchar(1)		NULL,
	email							varchar(255)		NULL,
	telefono						varchar(30)		NULL,
	vencimiento						date				NULL,
	dias							smallint			NULL,
	hora_entrada				 time  NULL,
	hora_salida					 time  NULL,
	ip_permitida					varchar(20)		NULL,
	solicitud_registrar				smallint			NULL,
	solicitud_obs_tipo_proyecto		varchar(15)		NULL,
	solicitud_obs_tipo				varchar(20)		NULL,
	solicitud_observacion			varchar(255)	NULL,
	parametro_a						varchar(255)	NULL,
	parametro_b						varchar(255)	NULL,
	parametro_c						varchar(255)	NULL,
	autentificacion					varchar(10)		NULL DEFAULT 'plano',
	bloqueado						smallint		DEFAULT 0 NULL,
	CONSTRAINT	 apex_usuario_pk 	 PRIMARY	KEY ( usuario ),
	CONSTRAINT	 apex_usuario_fk_tipodoc  FOREIGN KEY ( usuario_tipodoc ) REFERENCES	 apex_usuario_tipodoc  ( usuario_tipodoc ) ON DELETE NO ACTION	ON	UPDATE NO ACTION  	
) ENGINE=InnoDB;


CREATE TABLE apex_usuario_perfil_datos
(	
	proyecto							varchar(15)		NOT NULL,
	usuario_perfil_datos			varchar(20)		NOT NULL,
	nombre							varchar(80)		NOT NULL,
	descripcion						text			NULL,
	listar							smallint			NULL,
	CONSTRAINT	 apex_usuario_perfil_datos_pk  PRIMARY	KEY ( proyecto , usuario_perfil_datos )
) ENGINE=InnoDB;

CREATE TABLE apex_usuario_grupo_acc
(	
	proyecto						varchar(15)		NOT NULL,
	usuario_grupo_acc				varchar(30)		NOT NULL,
	nombre							varchar(80)		NOT NULL,
	nivel_acceso					smallint		NULL,
	descripcion						text			NULL,
	vencimiento						date			NULL,
	dias							smallint		NULL,
	hora_entrada				 time  NULL,
	hora_salida					 time  NULL,
	listar							smallint			NULL,
	CONSTRAINT	 apex_usu_g_acc_pk  PRIMARY KEY ( proyecto , usuario_grupo_acc )
) ENGINE=InnoDB;

CREATE TABLE apex_usuario_proyecto
(	
	proyecto							varchar(15)			NOT NULL,
	usuario_grupo_acc					varchar(30)			NOT NULL,
	usuario								varchar(60)			NOT NULL,
	usuario_perfil_datos				varchar(20)			NULL,		
	CONSTRAINT	 apex_usu_proy_pk   PRIMARY KEY ( proyecto ,  usuario_grupo_acc ,  usuario ),
	CONSTRAINT	 apex_usu_proy_fk_usuario 	FOREIGN KEY	( usuario )	REFERENCES  apex_usuario  ( usuario ) ON DELETE	CASCADE ON UPDATE	CASCADE  	,
	CONSTRAINT	 apex_usu_proy_fk_grupo_acc  FOREIGN KEY ( proyecto , usuario_grupo_acc ) REFERENCES  apex_usuario_grupo_acc  ( proyecto , usuario_grupo_acc ) ON DELETE	CASCADE ON UPDATE CASCADE		 
) ENGINE=InnoDB;

CREATE TABLE apex_usuario_grupo_acc_item
(
	proyecto								varchar(15)		NOT NULL,
	usuario_grupo_acc					varchar(30)		NOT NULL,
 item_id integer NULL,	
 item varchar(60) NOT NULL ,
	CONSTRAINT	 apex_usu_item_pk  PRIMARY	KEY ( proyecto , usuario_grupo_acc , item ),
	CONSTRAINT	 apex_usu_item_fk_us_gru_acc 	FOREIGN KEY	( proyecto , usuario_grupo_acc )	REFERENCES  apex_usuario_grupo_acc 	( proyecto , usuario_grupo_acc )	ON	DELETE CASCADE ON UPDATE CASCADE   
) ENGINE=InnoDB;
  

CREATE TABLE apex_permiso_grupo_acc
(	
	proyecto							varchar(15)		NOT NULL,
	usuario_grupo_acc					varchar(30)		NOT NULL,
	permiso							integer		NOT NULL,
	CONSTRAINT	 apex_per_grupo_acc_pk  		PRIMARY	KEY ( usuario_grupo_acc , permiso , proyecto ),
	CONSTRAINT	 apex_per_grupo_acc_grupo_fk 	FOREIGN KEY	( proyecto , usuario_grupo_acc )	REFERENCES  apex_usuario_grupo_acc 	( proyecto , usuario_grupo_acc )	ON	DELETE CASCADE ON UPDATE CASCADE   
) ENGINE=InnoDB;
