text: /* ---------------------------------------------------- */
  /*  Generated by Enterprise Architect Version 12.1 		*/
  /*  Created On : 22-abr.-2017 9:40:59 a.m. 				*/
  /*  DBMS       : PostgreSQL 						*/
  /* ---------------------------------------------------- */
  
  /* Drop Tables */
  
  DROP TABLE IF EXISTS Accesos CASCADE
  ;
  
  DROP TABLE IF EXISTS Cantones CASCADE
  ;
  
  DROP TABLE IF EXISTS Demarcaciones CASCADE
  ;
  
  DROP TABLE IF EXISTS Entidades CASCADE
  ;
  
  DROP TABLE IF EXISTS pagina CASCADE
  ;
  
  DROP TABLE IF EXISTS Parroquias CASCADE
  ;
  
  DROP TABLE IF EXISTS perfil_region CASCADE
  ;
  
  DROP TABLE IF EXISTS Perfiles CASCADE
  ;
  
  DROP TABLE IF EXISTS Provincias CASCADE
  ;
  
  DROP TABLE IF EXISTS Region CASCADE
  ;
  
  DROP TABLE IF EXISTS Regionentidades CASCADE
  ;
  
  DROP TABLE IF EXISTS rol CASCADE
  ;
  
  DROP TABLE IF EXISTS tipo_acceso CASCADE
  ;
  
  DROP TABLE IF EXISTS tipo_entidad CASCADE
  ;
  
  DROP TABLE IF EXISTS Usuarios_ap CASCADE
  ;
  
  /* Create Tables */
  
  CREATE TABLE Accesos
  (
  	id__acceso numeric NOT NULL,
  	nombre_acceso varchar(50) NOT NULL,
  	id_pagina numeric NULL,
  	id_tipo_acceso numeric NULL,
  	cod_rol varchar(10) NULL
  )
  ;
  
  CREATE TABLE Demarcaciones
  (
  	id_demarcacion numeric NOT NULL,
  	cod_demarcacion varchar(4) NOT NULL,
  	nombre_demarcacion varchar(20) NOT NULL
  )
  ;
  
  CREATE TABLE Provincias
  (
  	cod_provincia varchar(4) NOT NULL,
  	nombre_provincia varchar(60) NULL,
  	cod_telefonico varchar(2) NULL
  )
  ;
  
  CREATE TABLE Cantones
  (
  	cod_canton varchar(4) NOT NULL,
  	nombre_canton varchar(80) NOT NULL,
  	cod_provincia varchar(4) NOT NULL,
  	id_demarcacion numeric NULL
  )
  ;
  
  
  CREATE TABLE Entidades
  (
  	id_entidad varchar(10) NOT NULL,
  	nombre_entidad varchar(100) NOT NULL,
  	cod_canton varchar(4) NULL,
  	cod_canton_p varchar(4) NULL,
  	cod_provincia varchar(4) NULL,
  	cod_provincia_p varchar(4) NULL,
  	cod_parroquia varchar(4) NULL,
  	id_tipo_entidad numeric NULL
  )
  ;
  
  
  CREATE SEQUENCE public.sq_paginas
      INCREMENT 1
      START 1
      MINVALUE 1
      CACHE 10;
  
  ALTER SEQUENCE public.sq_paginas
      OWNER TO postgres;
  
  CREATE TABLE pagina
  (
  	id_pagina numeric NOT NULL DEFAULT NEXTVAL('sq_paginas'),
  	nombre_pagina varchar(50) NOT NULL
  )
  ;
  
  CREATE TABLE Parroquias
  (
  	cod_parroquia varchar(4) NOT NULL,
  	Nombre_parroquia varchar(100) NULL,
  	cod_canton varchar(4) NOT NULL,
  	cod_provincia varchar(4) NOT NULL
  )
  ;
  
  CREATE TABLE perfil_region
  (
  	estado_per_reg varchar(1) NOT NULL,
  	id_usuario numeric NULL,
  	cod_rol varchar(10) NULL,
  	cod_region varchar(10) NULL
  )
  ;
  
  CREATE TABLE Perfiles
  (
  	estado_perfil varchar(1) NULL,
  	id_usuario numeric NOT NULL,
  	cod_rol varchar(10) NOT NULL
  )
  ;
  
  
  CREATE TABLE Region
  (
  	cod_region varchar(10) NOT NULL,
  	nombre_region varchar(100) NOT NULL
  )
  ;
  
  CREATE TABLE Regionentidades
  (
  	cod_region varchar(10) NOT NULL,
  	id_entidad varchar(10) NOT NULL
  )
  ;
  
  
  CREATE SEQUENCE public.sq_roles
      INCREMENT 1
      START 1
      MINVALUE 1
      CACHE 10;
  
  ALTER SEQUENCE public.sq_roles
      OWNER TO postgres;
  
  CREATE TABLE rol
  (
  	cod_rol varchar(10) NOT NULL DEFAULT NEXTVAL('sq_roles'),
  	nombre_rol varchar(50) NOT NULL
  )
  ;
  
  
  CREATE TABLE tipo_acceso
  (
  	id_tipo_acceso numeric NOT NULL,
  	nombre_acceso varchar(50) NOT NULL
  )
  ;
  
  CREATE TABLE tipo_entidad
  (
  	id_tipo_entidad numeric NOT NULL,
  	nombre_tipo_entidad varchar(50) NOT NULL
  )
  ;
  
  CREATE SEQUENCE public."sq_usuarios"
      INCREMENT 1
      START 1000
      MINVALUE 1
      CACHE 10;
  
  ALTER SEQUENCE public."sq_usuarios"
      OWNER TO postgres;
  
  
  CREATE TABLE Usuarios_ap
  (
  	id_usuario numeric NOT NULL DEFAULT NEXTVAL('sq_usuarios'),
  	usuario varchar(50) NOT NULL,
  	clave varchar(50) NULL,
  	login varchar(50) NOT NULL,
  	tipo_usuario varchar(1) NULL,
  	estado_usuario varchar(1) NULL,
  	identificacion numeric NULL,
  	nombres varchar(200) NULL,
  	usuario_digitador varchar(50) NULL,
  	fecha_digitacion date NULL,
  	email varchar(200) NULL,
  	authKey varchar(250) NOT NULL
  )
  ;
  
  /* Create Primary Keys, Indexes, Uniques, Checks */
  
  ALTER TABLE Accesos ADD CONSTRAINT PK_Accesos
  	PRIMARY KEY (id__acceso)
  ;
  
  CREATE INDEX IXFK_Accesos_pagina ON Accesos (id_pagina ASC)
  ;
  
  CREATE INDEX IXFK_Accesos_rol ON Accesos (cod_rol ASC)
  ;
  
  CREATE INDEX IXFK_Accesos_tipo_acceso ON Accesos (id_tipo_acceso ASC)
  ;
  
  ALTER TABLE Cantones ADD CONSTRAINT PK_Cantones
  	PRIMARY KEY (cod_canton,cod_provincia)
  ;
  
  CREATE INDEX IXFK_Cantones_Demarcaciones ON Cantones (id_demarcacion ASC)
  ;
  
  CREATE INDEX IXFK_Cantones_Provincias ON Cantones (cod_provincia ASC)
  ;
  
  ALTER TABLE Demarcaciones ADD CONSTRAINT PK_Demarcaciones
  	PRIMARY KEY (id_demarcacion)
  ;
  
  ALTER TABLE Entidades ADD CONSTRAINT PK_Entidades
  	PRIMARY KEY (id_entidad)
  ;
  
  CREATE INDEX IXFK_Entidades_Cantones ON Entidades (cod_canton ASC,cod_provincia ASC)
  ;
  
  CREATE INDEX IXFK_Entidades_Parroquias ON Entidades (cod_parroquia ASC,cod_canton_p ASC,cod_provincia_p ASC)
  ;
  
  CREATE INDEX IXFK_Entidades_tipo_entidad ON Entidades (id_tipo_entidad ASC)
  ;
  
  ALTER TABLE pagina ADD CONSTRAINT PK_pagina
  	PRIMARY KEY (id_pagina)
  ;
  
  ALTER TABLE Parroquias ADD CONSTRAINT PK_Parroquias
  	PRIMARY KEY (cod_parroquia,cod_canton,cod_provincia)
  ;
  
  CREATE INDEX IXFK_Parroquias_Cantones ON Parroquias (cod_canton ASC,cod_provincia ASC)
  ;
  
  CREATE INDEX IXFK_perfil_region_Perfiles ON perfil_region (id_usuario ASC,cod_rol ASC)
  ;
  
  CREATE INDEX IXFK_perfil_region_Region ON perfil_region (cod_region ASC)
  ;
  
  ALTER TABLE Perfiles ADD CONSTRAINT PK_Perfiles
  	PRIMARY KEY (id_usuario,cod_rol)
  ;
  
  CREATE INDEX IXFK_Perfiles_rol ON Perfiles (cod_rol ASC)
  ;
  
  CREATE INDEX IXFK_Perfiles_Usuarios_ap ON Perfiles (id_usuario ASC)
  ;
  
  ALTER TABLE Provincias ADD CONSTRAINT PK_Provincias
  	PRIMARY KEY (cod_provincia)
  ;
  
  ALTER TABLE Region ADD CONSTRAINT PK_Region
  	PRIMARY KEY (cod_region)
  ;
  
  ALTER TABLE Regionentidades ADD CONSTRAINT PK_Regionentidades
  	PRIMARY KEY (cod_region,id_entidad)
  ;
  
  CREATE INDEX IXFK_Regionentidades_Entidades ON Regionentidades (id_entidad ASC)
  ;
  
  CREATE INDEX IXFK_Regionentidades_Region ON Regionentidades (cod_region ASC)
  ;
  
  ALTER TABLE rol ADD CONSTRAINT PK_rol
  	PRIMARY KEY (cod_rol)
  ;
  
  ALTER TABLE tipo_acceso ADD CONSTRAINT PK_Tipo_Acceso
  	PRIMARY KEY (id_tipo_acceso)
  ;
  
  ALTER TABLE tipo_entidad ADD CONSTRAINT PK_Tipo_Entidad
  	PRIMARY KEY (id_tipo_entidad)
  ;
  
  ALTER TABLE Usuarios_ap ADD CONSTRAINT PK_Usuarios_ap
  	PRIMARY KEY (id_usuario)
  ;
  
  ALTER TABLE public.perfil_region
      ADD CONSTRAINT PK_perfil_region PRIMARY KEY (id_usuario, cod_rol, cod_region);
  
  /* Create Foreign Key Constraints */
  
  ALTER TABLE Accesos ADD CONSTRAINT FK_Accesos_pagina
  	FOREIGN KEY (id_pagina) REFERENCES pagina (id_pagina) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Accesos ADD CONSTRAINT FK_Accesos_rol
  	FOREIGN KEY (cod_rol) REFERENCES rol (cod_rol) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Accesos ADD CONSTRAINT FK_Accesos_tipo_acceso
  	FOREIGN KEY (id_tipo_acceso) REFERENCES tipo_acceso (id_tipo_acceso) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Cantones ADD CONSTRAINT FK_Cantones_Demarcaciones
  	FOREIGN KEY (id_demarcacion) REFERENCES Demarcaciones (id_demarcacion) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Cantones ADD CONSTRAINT FK_Cantones_Provincias
  	FOREIGN KEY (cod_provincia) REFERENCES Provincias (cod_provincia) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Entidades ADD CONSTRAINT FK_Entidades_Cantones
  	FOREIGN KEY (cod_canton,cod_provincia) REFERENCES Cantones (cod_canton,cod_provincia) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Entidades ADD CONSTRAINT FK_Entidades_Parroquias
  	FOREIGN KEY (cod_parroquia,cod_canton_p,cod_provincia_p) REFERENCES Parroquias (cod_parroquia,cod_canton,cod_provincia) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Entidades ADD CONSTRAINT FK_Entidades_tipo_entidad
  	FOREIGN KEY (id_tipo_entidad) REFERENCES tipo_entidad (id_tipo_entidad) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Parroquias ADD CONSTRAINT FK_Parroquias_Cantones
  	FOREIGN KEY (cod_canton,cod_provincia) REFERENCES Cantones (cod_canton,cod_provincia) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE perfil_region ADD CONSTRAINT FK_perfil_region_Perfiles
  	FOREIGN KEY (id_usuario,cod_rol) REFERENCES Perfiles (id_usuario,cod_rol) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE perfil_region ADD CONSTRAINT FK_perfil_region_Region
  	FOREIGN KEY (cod_region) REFERENCES Region (cod_region) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Perfiles ADD CONSTRAINT FK_Perfiles_rol
  	FOREIGN KEY (cod_rol) REFERENCES rol (cod_rol) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Perfiles ADD CONSTRAINT FK_Perfiles_Usuarios_ap
  	FOREIGN KEY (id_usuario) REFERENCES Usuarios_ap (id_usuario) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Regionentidades ADD CONSTRAINT FK_Regionentidades_Entidades
  	FOREIGN KEY (id_entidad) REFERENCES Entidades (id_entidad) ON DELETE No Action ON UPDATE No Action
  ;
  
  ALTER TABLE Regionentidades ADD CONSTRAINT FK_Regionentidades_Region
  	FOREIGN KEY (cod_region) REFERENCES Region (cod_region) ON DELETE No Action ON UPDATE No Action
  ;
  