CREATE TABLE TBFORMULARIO_TIPO (
    ID                    INTEGER NOT NULL,
    DESCRICAO             VARCHAR(30),
    STATUSEXCLUSAO        CHAR(1) DEFAULT '0',
    DATAHORA_INSERT       TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE       TIMESTAMP,
    DATAHORA_DELETE       TIMESTAMP
);

ALTER TABLE TBFORMULARIO_TIPO ADD CONSTRAINT PK_TBFORMULARIO_TIPO PRIMARY KEY (ID);

-----

CREATE SEQUENCE GTBFORMULARIO_TIPO;

CREATE INDEX ITBFORMULARIO_TIPO_01 ON TBFORMULARIO_TIPO (STATUSEXCLUSAO);





-----
-----




CREATE TABLE TBFORMULARIO (
    ID                    INTEGER NOT NULL,
    FORMULARIO_TIPO_ID    INTEGER,
    TITULO                VARCHAR(100),
    DESCRICAO             VARCHAR(300),
    PERIODO_INI           DATE,
    PERIODO_FIM           DATE,
    USUARIO_ID            INTEGER,
    DATAHORA              TIMESTAMP,
    STATUS                CHAR(1) COMPUTED BY (IIF((PERIODO_INI <= 'NOW') AND (PERIODO_FIM >= 'NOW'), '1', '0')),
    STATUSEXCLUSAO        CHAR(1) DEFAULT '0',
    DATAHORA_INSERT       TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE       TIMESTAMP,
    DATAHORA_DELETE       TIMESTAMP
);

ALTER TABLE TBFORMULARIO ADD CONSTRAINT PK_TBFORMULARIO PRIMARY KEY (ID);

-----

CREATE SEQUENCE GTBFORMULARIO;

CREATE INDEX ITBFORMULARIO_01 ON TBFORMULARIO (STATUSEXCLUSAO);





-----
-----




CREATE TABLE TBFORMULARIO_DESTINATARIO (
    ID                    INTEGER NOT NULL,
    FORMULARIO_ID         INTEGER,
    USUARIO_ID            INTEGER,
    CCUSTO                VARCHAR(8),
    PESO_RESPOSTA         INTEGER,
    STATUS_RESPOSTA       CHAR(1) DEFAULT '0',
    STATUSEXCLUSAO        CHAR(1) DEFAULT '0',
    DATAHORA_INSERT       TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE       TIMESTAMP,
    DATAHORA_DELETE       TIMESTAMP
);

ALTER TABLE TBFORMULARIO_DESTINATARIO ADD CONSTRAINT PK_TBFORMULARIO_DESTINATARIO PRIMARY KEY (ID);

COMMENT ON COLUMN TBFORMULARIO_DESTINATARIO.STATUS_RESPOSTA IS
'Define se o destinatario ja respondeu.';

-----

CREATE SEQUENCE GTBFORMULARIO_DESTINATARIO;

CREATE INDEX ITBFORMULARIO_DESTINATARIO_01 ON TBFORMULARIO_DESTINATARIO (STATUSEXCLUSAO);
CREATE INDEX ITBFORMULARIO_DESTINATARIO_02 ON TBFORMULARIO_DESTINATARIO (FORMULARIO_ID);






-----
-----





CREATE TABLE TBFORMULARIO_RESPOSTA_TIPO (
    ID                    INTEGER NOT NULL,
    DESCRICAO             VARCHAR(30),
    STATUSEXCLUSAO        CHAR(1) DEFAULT '0',
    DATAHORA_INSERT       TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE       TIMESTAMP,
    DATAHORA_DELETE       TIMESTAMP
);

ALTER TABLE TBFORMULARIO_RESPOSTA_TIPO ADD CONSTRAINT PK_TBFORMULARIO_RESPOSTA_TIPO PRIMARY KEY (ID);

-----

CREATE SEQUENCE GTBFORMULARIO_RESPOSTA_TIPO;

CREATE INDEX ITBFORMULARIO_RESPOSTA_TIPO_01 ON TBFORMULARIO_RESPOSTA_TIPO (STATUSEXCLUSAO);




-----
-----




CREATE TABLE TBFORMULARIO_PERGUNTA (
    ID                          INTEGER NOT NULL,
    FORMULARIO_ID               INTEGER,
    DESCRICAO                   VARCHAR(200),
    FORMULARIO_RESPOSTA_TIPO_ID INTEGER,
    STATUSEXCLUSAO              CHAR(1) DEFAULT '0',
    DATAHORA_INSERT             TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE             TIMESTAMP,
    DATAHORA_DELETE             TIMESTAMP
);

ALTER TABLE TBFORMULARIO_PERGUNTA ADD CONSTRAINT PK_TBFORMULARIO_PERGUNTA PRIMARY KEY (ID);

-----

CREATE SEQUENCE GTBFORMULARIO_PERGUNTA;

CREATE INDEX ITBFORMULARIO_PERGUNTA_01 ON TBFORMULARIO_PERGUNTA (STATUSEXCLUSAO);




-----
-----




CREATE TABLE TBFORMULARIO_ALTERNATIVA (
    ID                          INTEGER NOT NULL,
    FORMULARIO_ID               INTEGER,
    FORMULARIO_PERGUNTA_ID      INTEGER,
    FORMULARIO_ALTERN_NIVEL_ID  INTEGER,
    DESCRICAO                   VARCHAR(100),
    DESCRICAO_OBRIGATORIA       CHAR(1) DEFAULT '0',
    NOTA                        INTEGER,
    STATUSEXCLUSAO              CHAR(1) DEFAULT '0',
    DATAHORA_INSERT             TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE             TIMESTAMP,
    DATAHORA_DELETE             TIMESTAMP
);

ALTER TABLE TBFORMULARIO_ALTERNATIVA ADD CONSTRAINT PK_TBFORMULARIO_ALTERNATIVA PRIMARY KEY (ID);

-----

CREATE SEQUENCE GTBFORMULARIO_ALTERNATIVA;

CREATE INDEX ITBFORMULARIO_ALTERNATIVA_01 ON TBFORMULARIO_ALTERNATIVA (STATUSEXCLUSAO);
CREATE INDEX ITBFORMULARIO_ALTERNATIVA_02 ON TBFORMULARIO_ALTERNATIVA (FORMULARIO_ID);
CREATE INDEX ITBFORMULARIO_ALTERNATIVA_03 ON TBFORMULARIO_ALTERNATIVA (FORMULARIO_PERGUNTA_ID);








-----
-----




CREATE TABLE TBFORMULARIO_ALTERN_NIVEL (
    ID                    INTEGER NOT NULL,
    DESCRICAO             VARCHAR(30),
    STATUSEXCLUSAO        CHAR(1) DEFAULT '0',
    DATAHORA_INSERT       TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE       TIMESTAMP,
    DATAHORA_DELETE       TIMESTAMP
);

ALTER TABLE TBFORMULARIO_ALTERN_NIVEL ADD CONSTRAINT PK_TBFORMULARIO_ALTERN_NIVEL PRIMARY KEY (ID);

-----

CREATE SEQUENCE GTBFORMULARIO_ALTERN_NIVEL;

CREATE INDEX ITBFORMULARIO_ALTERN_NIVEL_01 ON TBFORMULARIO_ALTERN_NIVEL (STATUSEXCLUSAO);




-----
-----




CREATE TABLE TBFORMULARIO_RESPOSTA (
    ID                          INTEGER NOT NULL,
    FORMULARIO_ID               INTEGER,
    FORMULARIO_PERGUNTA_ID      INTEGER,
    DESCRICAO                   VARCHAR(300),
    ALTERNATIVA_ESCOLHIDA_ID    INTEGER,
    USUARIO_ID                  INTEGER,
    CCUSTO                      VARCHAR(8),
    COLABORADOR_ID              INTEGER,
    DATAHORA                    TIMESTAMP DEFAULT 'NOW',
    STATUSEXCLUSAO              CHAR(1) DEFAULT '0',
    DATAHORA_INSERT             TIMESTAMP DEFAULT 'NOW',
    DATAHORA_UPDATE             TIMESTAMP,
    DATAHORA_DELETE             TIMESTAMP
);

ALTER TABLE TBFORMULARIO_RESPOSTA ADD CONSTRAINT PK_TBFORMULARIO_RESPOSTA PRIMARY KEY (ID);

-----

CREATE SEQUENCE GTBFORMULARIO_RESPOSTA;

CREATE INDEX ITBFORMULARIO_RESPOSTA_01 ON TBFORMULARIO_RESPOSTA (STATUSEXCLUSAO);
CREATE INDEX ITBFORMULARIO_RESPOSTA_02 ON TBFORMULARIO_RESPOSTA (FORMULARIO_ID);