/******************************************************************************/
/****         Generated by IBExpert 2007.05.03 12/12/2011 15:32:29         ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES ISO8859_1;



/******************************************************************************/
/****                        User Defined Functions                        ****/
/******************************************************************************/

DECLARE EXTERNAL FUNCTION DIV
    INTEGER,
    INTEGER
    RETURNS DOUBLE PRECISION BY VALUE
    ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf';


DECLARE EXTERNAL FUNCTION F_RTFTOTEXT
    CSTRING(32767)
    RETURNS CSTRING(32767)
    ENTRY_POINT 'RtfToText' MODULE_NAME 'udf_RtfToText.dll';


DECLARE EXTERNAL FUNCTION "MOD"
    INTEGER,
    INTEGER
    RETURNS DOUBLE PRECISION BY VALUE
    ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf';


DECLARE EXTERNAL FUNCTION "ROUND"
    INTEGER BY DESCRIPTOR,
    INTEGER BY DESCRIPTOR
    RETURNS PARAMETER 2
    ENTRY_POINT 'fbround' MODULE_NAME 'fbudf';


DECLARE EXTERNAL FUNCTION STRLEN
    CSTRING(254)
    RETURNS INTEGER BY VALUE
    ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';


DECLARE EXTERNAL FUNCTION SUBSTR
    CSTRING(254),
    SMALLINT,
    SMALLINT
    RETURNS CSTRING(254) FREE_IT
    ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';




/******************************************************************************/
/****                               Domains                                ****/
/******************************************************************************/

CREATE DOMAIN TIPO_BINARIO AS
BLOB SUB_TYPE 0 SEGMENT SIZE 80;

CREATE DOMAIN TIPO_BOOLEANO AS
SMALLINT;

CREATE DOMAIN TIPO_CANTIDAD AS
NUMERIC(11,2);

CREATE DOMAIN TIPO_CONCEPTO AS
VARCHAR(2000);

CREATE DOMAIN TIPO_ID AS
INTEGER;

CREATE DOMAIN TIPO_IMPORTE AS
NUMERIC(11,2);

CREATE DOMAIN TIPO_NOTAS AS
BLOB SUB_TYPE 1 SEGMENT SIZE 80;

CREATE DOMAIN TIPO_PERFIL AS
VARCHAR(15);

CREATE DOMAIN TIPO_PORCENTAJE AS
NUMERIC(2,2);

CREATE DOMAIN TIPO_USUARIO AS
VARCHAR(30);



/******************************************************************************/
/****                              Generators                              ****/
/******************************************************************************/

CREATE GENERATOR GEN_ARTICULOS_ID;
SET GENERATOR GEN_ARTICULOS_ID TO 1;

CREATE GENERATOR GEN_CATEGORIAS_ID;
SET GENERATOR GEN_CATEGORIAS_ID TO 1;

CREATE GENERATOR GEN_CONFIGURACION_ID;
SET GENERATOR GEN_CONFIGURACION_ID TO 1;

CREATE GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID;
SET GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID TO 1;

CREATE GENERATOR GEN_CONTACTOS_DIR_ID;
SET GENERATOR GEN_CONTACTOS_DIR_ID TO 1;

CREATE GENERATOR GEN_CONTACTOS_ID;
SET GENERATOR GEN_CONTACTOS_ID TO 1;

CREATE GENERATOR GEN_CONTACTOS_PERSONAL_ID;
SET GENERATOR GEN_CONTACTOS_PERSONAL_ID TO 1;

CREATE GENERATOR GEN_EMPRESAS_CONTACTOS_ID;
SET GENERATOR GEN_EMPRESAS_CONTACTOS_ID TO 1;

CREATE GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID;
SET GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID TO 1;

CREATE GENERATOR GEN_EMPRESAS_ID;
SET GENERATOR GEN_EMPRESAS_ID TO 1;

CREATE GENERATOR GEN_EMPRESAS_USUARIOS_ID;
SET GENERATOR GEN_EMPRESAS_USUARIOS_ID TO 1;

CREATE GENERATOR GEN_MEDICACION_DETALLES_ID;
SET GENERATOR GEN_MEDICACION_DETALLES_ID TO 1;

CREATE GENERATOR GEN_MEDICACION_ID;
SET GENERATOR GEN_MEDICACION_ID TO 1;

CREATE GENERATOR GEN_PERMISOSEX_ID;
SET GENERATOR GEN_PERMISOSEX_ID TO 1;

CREATE GENERATOR GEN_PERMISOS_ID;
SET GENERATOR GEN_PERMISOS_ID TO 1;

CREATE GENERATOR GEN_REFERENCIAS_ID;
SET GENERATOR GEN_REFERENCIAS_ID TO 1;

CREATE GENERATOR GEN_UNIDADES_MEDIDA_ID;
SET GENERATOR GEN_UNIDADES_MEDIDA_ID TO 1;

CREATE GENERATOR GEN_USUARIOS_ID;
SET GENERATOR GEN_USUARIOS_ID TO 1;



/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/



CREATE TABLE ARTICULOS (
    ID                  TIPO_ID NOT NULL,
    ID_EMPRESA          TIPO_ID,
    REFERENCIA          VARCHAR(255),
    DESCRIPCION         VARCHAR(255),
    FAMILIA             VARCHAR(255),
    UNIDAD_MEDIDA       VARCHAR(255),
    IMAGEN              TIPO_BINARIO,
    COMISIONABLE        TIPO_BOOLEANO,
    FABRICANTE          VARCHAR(255),
    REFERENCIA_FABR     VARCHAR(255),
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    USUARIO             TIPO_USUARIO,
    INVENTARIABLE       TIPO_BOOLEANO,
    ELIMINADO           TIPO_BOOLEANO,
    PARAM_MARGEN        FLOAT,
    TIEMPO              INTEGER,
    PARAM_TIEMPO        FLOAT,
    MANO_OBRA           TIPO_IMPORTE
);


CREATE TABLE CATEGORIAS (
    ID         TIPO_ID NOT NULL,
    CATEGORIA  VARCHAR(255) NOT NULL
);


CREATE TABLE CONFIGURACION (
    ID          TIPO_ID NOT NULL,
    CODIGO      VARCHAR(50) NOT NULL,
    VALOR       VARCHAR(255) NOT NULL,
    ID_EMPRESA  TIPO_ID
);


CREATE TABLE CONTACTOS (
    ID                  TIPO_ID NOT NULL,
    NIF_CIF             VARCHAR(15),
    NOMBRE              VARCHAR(255) NOT NULL,
    CALLE               VARCHAR(255),
    POBLACION           VARCHAR(255),
    PROVINCIA           VARCHAR(255),
    CODIGO_POSTAL       VARCHAR(10),
    TELEFONO_1          VARCHAR(25),
    TELEFONO_2          VARCHAR(25),
    MOVIL_1             VARCHAR(25),
    MOVIL_2             VARCHAR(25),
    FAX                 VARCHAR(25),
    EMAIL_1             VARCHAR(255),
    EMAIL_2             VARCHAR(255),
    PAGINA_WEB          VARCHAR(255),
    NOTAS               TIPO_NOTAS,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    USUARIO             TIPO_USUARIO,
    REFERENCIA          VARCHAR(255),
    PERSONA_CONTACTO    VARCHAR(255)
);


CREATE TABLE CONTACTOS_CATEGORIAS (
    ID_CONTACTO   TIPO_ID NOT NULL,
    ID_CATEGORIA  TIPO_ID NOT NULL
);


CREATE TABLE CONTACTOS_DATOS_BANCO (
    ID                  TIPO_ID NOT NULL,
    ID_CONTACTO         TIPO_ID NOT NULL,
    TITULAR             VARCHAR(255),
    ENTIDAD             VARCHAR(15),
    SUCURSAL            VARCHAR(15),
    DC                  VARCHAR(15),
    CUENTA              VARCHAR(15),
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP
);


CREATE TABLE CONTACTOS_DATOS_PERSONAL (
    ID                  TIPO_ID NOT NULL,
    ID_CONTACTO         TIPO_ID NOT NULL,
    NOMBRE              VARCHAR(255),
    PUESTO              VARCHAR(255),
    TELEFONO            VARCHAR(25),
    MOVIL               VARCHAR(25),
    FAX                 VARCHAR(25),
    EMAIL               VARCHAR(255),
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP
);


CREATE TABLE CONTACTOS_DIRECCIONES (
    ID                  TIPO_ID NOT NULL,
    ID_CONTACTO         TIPO_ID NOT NULL,
    CALLE               VARCHAR(255),
    POBLACION           VARCHAR(255),
    PROVINCIA           VARCHAR(255),
    CODIGO_POSTAL       VARCHAR(10),
    PERSONA_CONTACTO    VARCHAR(255),
    NOMBRE              VARCHAR(255),
    TELEFONO            VARCHAR(25),
    MOVIL               VARCHAR(25),
    FAX                 VARCHAR(25),
    EMAIL               VARCHAR(255),
    NOTAS               TIPO_NOTAS,
    PORTE               TIPO_IMPORTE,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP
);


CREATE TABLE EMPRESAS (
    ID                  TIPO_ID NOT NULL,
    NIF_CIF             VARCHAR(15),
    NOMBRE              VARCHAR(255),
    RAZON_SOCIAL        VARCHAR(255),
    CALLE               VARCHAR(255),
    POBLACION           VARCHAR(255),
    PROVINCIA           VARCHAR(255),
    CODIGO_POSTAL       VARCHAR(10),
    TELEFONO_1          VARCHAR(25),
    TELEFONO_2          VARCHAR(25),
    MOVIL_1             VARCHAR(25),
    MOVIL_2             VARCHAR(25),
    FAX                 VARCHAR(25),
    EMAIL_1             VARCHAR(255),
    EMAIL_2             VARCHAR(255),
    PAGINA_WEB          VARCHAR(255),
    NOTAS               TIPO_NOTAS,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    USUARIO             TIPO_USUARIO,
    LOGOTIPO            TIPO_BINARIO,
    REGISTRO_MERCANTIL  VARCHAR(255),
    PARAM_TIEMPO        TIPO_IMPORTE,
    PARAM_MARGEN        TIPO_PORCENTAJE,
    ID_TIPO_IVA         SMALLINT,
    ID_FORMA_PAGO       SMALLINT,
    ID_ALMACEN          SMALLINT
);


CREATE TABLE EMPRESAS_CONTACTOS (
    ID           TIPO_ID NOT NULL,
    ID_EMPRESA   TIPO_ID NOT NULL,
    ID_CONTACTO  TIPO_ID NOT NULL
);


CREATE TABLE EMPRESAS_DATOS_BANCO (
    ID          TIPO_ID NOT NULL,
    ID_EMPRESA  TIPO_ID NOT NULL,
    NOMBRE      VARCHAR(255),
    ENTIDAD     VARCHAR(15),
    SUCURSAL    VARCHAR(15),
    DC          VARCHAR(15),
    CUENTA      VARCHAR(15),
    SUFIJO_N19  VARCHAR(3),
    SUFIJO_N58  VARCHAR(3),
    IBAN        VARCHAR(255) COLLATE ES_ES,
    SWIFT       VARCHAR(255) COLLATE ES_ES
);


CREATE TABLE EMPRESAS_USUARIOS (
    ID          TIPO_ID NOT NULL,
    ID_EMPRESA  TIPO_ID NOT NULL,
    ID_USUARIO  TIPO_ID NOT NULL
);


CREATE TABLE MEDICACION (
    ID                  TIPO_ID NOT NULL,
    ID_PACIENTE         TIPO_ID,
    REFERENCIA          VARCHAR(255),
    FECHA_DESDE         DATE,
    FECHA_HASTA         DATE,
    TIPO                VARCHAR(255),
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    USUARIO             TIPO_USUARIO
);


CREATE TABLE MEDICACION_DETALLES (
    ID             TIPO_ID NOT NULL,
    ID_MEDICACION  TIPO_ID NOT NULL,
    POSICION       INTEGER,
    TIPO_DETALLE   VARCHAR(25),
    ID_ARTICULO    TIPO_ID,
    REFERENCIA     VARCHAR(255),
    CONCEPTO       TIPO_CONCEPTO,
    CANTIDAD       TIPO_CANTIDAD,
    POSOLOGIA      VARCHAR(255),
    FORMA_COLOR    VARCHAR(255),
    LOTE           VARCHAR(255),
    VISIBLE        TIPO_BOOLEANO
);


CREATE TABLE PACIENTES_DATOS (
    ID_PACIENTE       TIPO_ID NOT NULL,
    FECHA_NACIMIENTO  DATE,
    NUMERO_SS         VARCHAR(255),
    FECHA_BAJA        DATE,
    CAUSA_BAJA        VARCHAR(255),
    PABELLON					VARCHAR(255)    
);


CREATE TABLE PERMISOS (
    ID          TIPO_ID NOT NULL,
    ID_USUARIO  TIPO_ID,
    MODULO      VARCHAR(50),
    NOMBRECOMP  VARCHAR(50),
    CHECKSUM    VARCHAR(250)
);


CREATE TABLE PERMISOSEX (
    ID          TIPO_ID NOT NULL,
    ID_USUARIO  TIPO_ID,
    MODULO      VARCHAR(50),
    NOMBRECOMP  VARCHAR(50),
    NOMBREFORM  VARCHAR(50),
    CHECKSUM    VARCHAR(250)
);


CREATE TABLE POBLACIONES (
    ID            TIPO_ID NOT NULL,
    ID_PROVINCIA  TIPO_ID NOT NULL,
    DESCRIPCION   VARCHAR(255) NOT NULL
);


CREATE TABLE PROVINCIAS (
    ID           TIPO_ID NOT NULL,
    DESCRIPCION  VARCHAR(255) NOT NULL
);


CREATE TABLE REFERENCIAS (
    ID           TIPO_ID NOT NULL,
    ID_EMPRESA   TIPO_ID,
    CODIGO       VARCHAR(50) NOT NULL,
    VALOR        VARCHAR(255) NOT NULL,
    DESCRIPCION  VARCHAR(255)
);


CREATE TABLE UNIDADES_MEDIDA (
    ID           TIPO_ID NOT NULL,
    DESCRIPCION  VARCHAR(255)
);


CREATE TABLE USUARIOS (
    ID           TIPO_ID NOT NULL,
    USERNAME     VARCHAR(30),
    LOGIN        TIPO_USUARIO,
    PASS         VARCHAR(250),
    PASSEXPIRED  DATE,
    BLOQUEADO    TIPO_BOOLEANO,
    EMAIL        VARCHAR(150),
    USERDAYSSUN  INTEGER,
    PRIVILEGED   INTEGER,
    TIPO         CHAR(1),
    ID_PERFIL    TIPO_ID,
    CHECKSUM     VARCHAR(250)
);


CREATE TABLE USUARIOS_EVENTOS (
    APLICACION   VARCHAR(250),
    ID_USUARIO   TIPO_ID,
    FECHA        CHAR(10),
    HORA         CHAR(8),
    FORM         VARCHAR(250),
    TITULO_FORM  VARCHAR(100),
    EVENTO       VARCHAR(50),
    NOTAS        TIPO_NOTAS,
    TNAME        VARCHAR(20)
);


CREATE TABLE USUARIOS_LOGON (
    LOGONID     CHAR(38) NOT NULL,
    ID_USUARIO  TIPO_ID,
    APLICACION  VARCHAR(50),
    EQUIPO      VARCHAR(50),
    DATA        VARCHAR(14)
);




/******************************************************************************/
/****                                Views                                 ****/
/******************************************************************************/


/* View: V_CONTACTOS */
CREATE VIEW V_CONTACTOS(
    ID,
    ID_CATEGORIA,
    NIF_CIF,
    NOMBRE,
    PERSONA_CONTACTO,
    CALLE,
    POBLACION,
    PROVINCIA,
    CODIGO_POSTAL,
    TELEFONO_1,
    TELEFONO_2,
    MOVIL_1,
    MOVIL_2,
    FAX,
    EMAIL_1,
    EMAIL_2,
    PAGINA_WEB,
    NOTAS,
    FECHA_ALTA,
    FECHA_MODIFICACION,
    USUARIO,
    ID_EMPRESA,
    REFERENCIA)
AS
SELECT CONTACTOS.ID,
       CONTACTOS_CATEGORIAS.ID_CATEGORIA,
       CONTACTOS.NIF_CIF,
       CONTACTOS.NOMBRE,
       CONTACTOS.PERSONA_CONTACTO,
       CONTACTOS.CALLE,
       CONTACTOS.POBLACION,
       CONTACTOS.PROVINCIA,
       CONTACTOS.CODIGO_POSTAL,
       CONTACTOS.TELEFONO_1,
       CONTACTOS.TELEFONO_2,
       CONTACTOS.MOVIL_1,
       CONTACTOS.MOVIL_2,
       CONTACTOS.FAX,
       CONTACTOS.EMAIL_1,
       CONTACTOS.EMAIL_2,
       CONTACTOS.PAGINA_WEB,
       CONTACTOS.NOTAS,
       CONTACTOS.FECHA_ALTA,
       CONTACTOS.FECHA_MODIFICACION,
       CONTACTOS.USUARIO,
       EMPRESAS_CONTACTOS.ID_EMPRESA,
       CONTACTOS.REFERENCIA
FROM CONTACTOS
     INNER JOIN CONTACTOS_CATEGORIAS ON (CONTACTOS_CATEGORIAS.ID_CONTACTO =
     CONTACTOS.ID)
     INNER JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO =
     CONTACTOS.ID)
;



/* View: V_MEDICACION */
CREATE VIEW V_MEDICACION(
    ID,
    ID_PACIENTE,
    REFERENCIA,
    NOMBRE,
    NUMERO_SS,
    FECHA_DESDE,
    FECHA_HASTA,
    TIPO)
AS
SELECT
  MEDICACION.ID,
  MEDICACION.ID_PACIENTE,
  MEDICACION.REFERENCIA,
  CONTACTOS.NOMBRE,
  PACIENTES_DATOS.NUMERO_SS,
  MEDICACION.FECHA_DESDE,
  MEDICACION.FECHA_HASTA,
  MEDICACION.TIPO
FROM
  MEDICACION
  LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = MEDICACION.ID_PACIENTE)
  LEFT OUTER JOIN PACIENTES_DATOS ON (PACIENTES_DATOS.ID_PACIENTE = CONTACTOS.ID)
;



/* View: V_PACIENTES */
CREATE VIEW V_PACIENTES(
    ID,
    ID_CATEGORIA,
    NIF_CIF,
    NOMBRE,
    PERSONA_CONTACTO,
    CALLE,
    POBLACION,
    PROVINCIA,
    CODIGO_POSTAL,
    TELEFONO_1,
    TELEFONO_2,
    MOVIL_1,
    MOVIL_2,
    FAX,
    EMAIL_1,
    EMAIL_2,
    PAGINA_WEB,
    NOTAS,
    FECHA_ALTA,
    FECHA_MODIFICACION,
    USUARIO,
    ID_EMPRESA,
    REFERENCIA,
    FECHA_NACIMIENTO,
    NUMERO_SS,
    FECHA_BAJA,
    CAUSA_BAJA,
    PABELLON)
AS
SELECT V_CONTACTOS.ID,
  V_CONTACTOS.ID_CATEGORIA,
  V_CONTACTOS.NIF_CIF,
  V_CONTACTOS.NOMBRE,
  V_CONTACTOS.PERSONA_CONTACTO,
  V_CONTACTOS.CALLE,
  V_CONTACTOS.POBLACION,
  V_CONTACTOS.PROVINCIA,
  V_CONTACTOS.CODIGO_POSTAL,
  V_CONTACTOS.TELEFONO_1,
  V_CONTACTOS.TELEFONO_2,
  V_CONTACTOS.MOVIL_1,
  V_CONTACTOS.MOVIL_2,
  V_CONTACTOS.FAX,
  V_CONTACTOS.EMAIL_1,
  V_CONTACTOS.EMAIL_2,
  V_CONTACTOS.PAGINA_WEB,
  V_CONTACTOS.NOTAS,
  V_CONTACTOS.FECHA_ALTA,
  V_CONTACTOS.FECHA_MODIFICACION,
  V_CONTACTOS.USUARIO,
  V_CONTACTOS.ID_EMPRESA, 
  V_CONTACTOS.REFERENCIA,
  
  PACIENTES_DATOS.FECHA_NACIMIENTO,
  PACIENTES_DATOS.NUMERO_SS,
  PACIENTES_DATOS.FECHA_BAJA,
  PACIENTES_DATOS.CAUSA_BAJA,
  PACIENTES_DATOS.PABELLON
 
FROM V_CONTACTOS
INNER JOIN PACIENTES_DATOS ON (PACIENTES_DATOS.ID_PACIENTE = V_CONTACTOS.ID)
WHERE V_CONTACTOS.ID_CATEGORIA = 4
;

/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

ALTER TABLE ARTICULOS ADD CONSTRAINT PK_ARTICULOS PRIMARY KEY (ID);
ALTER TABLE CATEGORIAS ADD CONSTRAINT PK_CATEGORIAS PRIMARY KEY (ID);
ALTER TABLE CONFIGURACION ADD CONSTRAINT PK_CONFIGURACION PRIMARY KEY (ID);
ALTER TABLE CONTACTOS ADD CONSTRAINT PK_CONTACTOS PRIMARY KEY (ID);
ALTER TABLE CONTACTOS_CATEGORIAS ADD CONSTRAINT PK_CONTACTOS_CATEGORIAS PRIMARY KEY (ID_CONTACTO, ID_CATEGORIA);
ALTER TABLE CONTACTOS_DATOS_BANCO ADD CONSTRAINT PK_CONTACTOS_DATOS_BANCO PRIMARY KEY (ID);
ALTER TABLE CONTACTOS_DATOS_PERSONAL ADD CONSTRAINT PK_CONTACTOS_DATOS_PER PRIMARY KEY (ID);
ALTER TABLE CONTACTOS_DIRECCIONES ADD CONSTRAINT PK_CONTACTOS_DIR PRIMARY KEY (ID);
ALTER TABLE EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID);
ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID);
ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID);
ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID);
ALTER TABLE MEDICACION ADD CONSTRAINT PK_MEDICACION PRIMARY KEY (ID);
ALTER TABLE MEDICACION DETALLES ADD CONSTRAINT PK_MEDICACION_DETALLES PRIMARY KEY (ID);
ALTER TABLE PACIENTES_DATOS ADD CONSTRAINT PK_PACIENTES_DATOS PRIMARY KEY (ID_PACIENTE)
ALTER TABLE PERMISOS ADD CONSTRAINT PK_PERMISOS PRIMARY KEY (ID);
ALTER TABLE PERMISOSEX ADD CONSTRAINT PK_PERMISOSEX PRIMARY KEY (ID);
ALTER TABLE POBLACIONES ADD CONSTRAINT PK_POBLACIONES PRIMARY KEY (ID);
ALTER TABLE PROVINCIAS ADD CONSTRAINT PK_PROVINCIAS PRIMARY KEY (ID);
ALTER TABLE REFERENCIAS ADD CONSTRAINT PK_REFERENCIAS PRIMARY KEY (ID);
ALTER TABLE UNIDADES_MEDIDA ADD PRIMARY KEY (ID);
ALTER TABLE USUARIOS ADD CONSTRAINT PK_USUARIOS PRIMARY KEY (ID);
ALTER TABLE USUARIOS_LOGON ADD CONSTRAINT PK_USUARIOS_LOGON PRIMARY KEY (LOGONID);


/******************************************************************************/
/****                             Foreign Keys                             ****/
/******************************************************************************/

ALTER TABLE ARTICULOS ADD CONSTRAINT FK_ARTICULOS_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT FK_EMPRESAS_CONTACTOS FOREIGN KEY (ID_CONTACTO) REFERENCES CONTACTOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT FK_EMPRESAS_DATOS_BANCO FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE;


/******************************************************************************/
/****                               Indices                                ****/
/******************************************************************************/

CREATE INDEX IDX_CONFIGURACION ON CONFIGURACION (ID_EMPRESA);
CREATE INDEX IDX_CONTACTOS_CATEGORIAS ON CONTACTOS_CATEGORIAS (ID_CONTACTO);
CREATE INDEX IDX_CONTACTOS_CATEGORIAS1 ON CONTACTOS_CATEGORIAS (ID_CATEGORIA);
CREATE INDEX IDX_CONTACTOS_DATOS_BANCO ON CONTACTOS_DATOS_BANCO (ID_CONTACTO);
CREATE INDEX IDX_CONTACTOS_PER_ID_CONTACTO ON CONTACTOS_DATOS_PERSONAL (ID_CONTACTO);
CREATE INDEX IDX_CONTACTOS_DIR_ID_CONTACTO ON CONTACTOS_DIRECCIONES (ID_CONTACTO);
CREATE INDEX IDX_EMPRESAS_CONTACTOS ON EMPRESAS_CONTACTOS (ID_EMPRESA, ID_CONTACTO);
CREATE INDEX IDX_EMPRESAS_USUARIOS ON EMPRESAS_USUARIOS (ID_EMPRESA, ID_USUARIO);
CREATE INDEX POBLACIONES_IDX1 ON POBLACIONES (ID_PROVINCIA);
CREATE INDEX IDX_REFERENCIAS ON REFERENCIAS (ID_EMPRESA);
CREATE INDEX IDX_MEDICACION ON MEDICACION (ID_PACIENTE);
CREATE INDEX IDX_MEDICACION_DETALLES ON MEDICACION_DETALLES (ID_MEDICACION);


/******************************************************************************/
/****                             Descriptions                             ****/
/******************************************************************************/



/******************************************************************************/
/****                              Privileges                              ****/
/******************************************************************************/


/* Privileges of users */
GRANT SELECT ON RDB$ROLES TO PUBLIC;