/*==============================================================*/
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     31/01/2008 09:55:56 a.m.                     */
/*==============================================================*/


CREATE SEQUENCE VMLIDENT;

/*==============================================================*/
/* Table: VMLADJUNTOS                                           */
/*==============================================================*/
CREATE TABLE VMLADJUNTOS  (
   CORREO               NUMBER(7)                       NOT NULL,
   NOMBRE               VARCHAR2(80)                    NOT NULL,
   ADJUNTO              BLOB                            NOT NULL,
   CONSTRAINT VMLADJUNTOS_PK PRIMARY KEY (CORREO, NOMBRE)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: VMLBANDEJA                                            */
/*==============================================================*/
CREATE TABLE VMLBANDEJA  (
   CORREO               NUMBER(7)                       NOT NULL,
   DESTINO              VARCHAR2(30)                    NOT NULL,
   ENVIADO              DATE                            NOT NULL,
   LEIDO                CHAR(1)                         NOT NULL
      CONSTRAINT VMLBANDEJA_LEIDO_CK CHECK (LEIDO IN ('S','N')),
   RESPONDIDO           CHAR(1)                         NOT NULL
      CONSTRAINT VMLBANDEJA_RESPONDIDO_CK CHECK (RESPONDIDO IN ('S','N')),
   CONSTRAINT VMLBANDEJA_PK PRIMARY KEY (CORREO, DESTINO, ENVIADO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: VMLUSUARIO_BANDEJA_FK                                 */
/*==============================================================*/
CREATE INDEX VMLUSUARIO_BANDEJA_FK ON VMLBANDEJA (
   DESTINO ASC
);

/*==============================================================*/
/* Table: VMLCOPIAS                                             */
/*==============================================================*/
CREATE TABLE VMLCOPIAS  (
   CORREO               NUMBER(7)                       NOT NULL,
   DESTINO              VARCHAR2(30)                    NOT NULL,
   CONSTRAINT VMLCOPIAS_PK PRIMARY KEY (CORREO, DESTINO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: VMLCORREO                                             */
/*==============================================================*/
CREATE TABLE VMLCORREO  (
   CORREO               NUMBER(7)                       NOT NULL,
   FECHA                DATE                            NOT NULL,
   ORIGEN               VARCHAR2(30)                    NOT NULL,
   ASUNTO               VARCHAR2(200)                   NOT NULL,
   PRIORIDAD            CHAR(1)                         NOT NULL
      CONSTRAINT VMLCORREO_PRIORIDAD_CK CHECK (PRIORIDAD IN ('N','M','A','U')),
   MENSAJE              CLOB                            NOT NULL,
   RESPUESTA            CHAR(1)                         NOT NULL
      CONSTRAINT VMLCORREO_RESPUESTA_CK CHECK (RESPUESTA IN ('S','N')),
   DESTINO              VARCHAR2(30)                    NOT NULL,
   CONSTRAINT VMLCORREO_PK PRIMARY KEY (CORREO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: VMLUSUARIO_CORREOORIGEN_FK                            */
/*==============================================================*/
CREATE INDEX VMLUSUARIO_CORREOORIGEN_FK ON VMLCORREO (
   ORIGEN ASC
);

/*==============================================================*/
/* Table: VMLGRUPO                                              */
/*==============================================================*/
CREATE TABLE VMLGRUPO  (
   GRUPO                VARCHAR2(30)                    NOT NULL,
   NOMBRE               VARCHAR2(30)                    NOT NULL,
   CONSTRAINT VMLGRUPO_PK PRIMARY KEY (GRUPO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: VMLGRUPOUSUARIO                                       */
/*==============================================================*/
CREATE TABLE VMLGRUPOUSUARIO  (
   GRUPO                VARCHAR2(30)                    NOT NULL,
   USUARIO              VARCHAR2(30)                    NOT NULL,
   CONSTRAINT VMLGRUPOUSUARIO_PK PRIMARY KEY (GRUPO, USUARIO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: VMLUSUARIO_GRPUSR_FK                                  */
/*==============================================================*/
CREATE INDEX VMLUSUARIO_GRPUSR_FK ON VMLGRUPOUSUARIO (
   USUARIO ASC
);

/*==============================================================*/
/* Table: VMLUSUARIO                                            */
/*==============================================================*/
CREATE TABLE VMLUSUARIO  (
   USUARIO              VARCHAR2(30)                    NOT NULL,
   DESCRIPCION          VARCHAR2(200)                   NOT NULL,
   PERFIL               VARCHAR(3)                      NOT NULL,
   ACTIVO               CHAR(1)                         NOT NULL
      CONSTRAINT VMLUSUARIO_ACTIVO_CK CHECK (ACTIVO IN ('S','N')),
   CONSTRAINT VMLUSUARIO_PK PRIMARY KEY (USUARIO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* View: VMLENVIOS                                              */
/*==============================================================*/
CREATE OR REPLACE VIEW VMLENVIOS AS
SELECT C.CORREO, M.ORIGEN, C.DESTINO, M.ASUNTO, M.PRIORIDAD, M.RESPUESTA,
       C.ENVIADO, C.LEIDO, C.RESPONDIDO
FROM VMLBANDEJA C, VMLCORREO M
WHERE C.CORREO=M.CORREO;

ALTER TABLE VMLADJUNTOS
   ADD CONSTRAINT VMLCORREO_ADJUNTOS_FK FOREIGN KEY (CORREO)
      REFERENCES VMLCORREO (CORREO);

ALTER TABLE VMLBANDEJA
   ADD CONSTRAINT VMLCORREO_BANDEJA_FK FOREIGN KEY (CORREO)
      REFERENCES VMLCORREO (CORREO);

ALTER TABLE VMLBANDEJA
   ADD CONSTRAINT VMLUSUARIO_BANDEJA_FK FOREIGN KEY (DESTINO)
      REFERENCES VMLUSUARIO (USUARIO);

ALTER TABLE VMLCOPIAS
   ADD CONSTRAINT VMLCORREO_COPIAS_FK FOREIGN KEY (CORREO)
      REFERENCES VMLCORREO (CORREO);

ALTER TABLE VMLCORREO
   ADD CONSTRAINT VMLUSUARIO_CORREOORIGEN_FK FOREIGN KEY (ORIGEN)
      REFERENCES VMLUSUARIO (USUARIO);

ALTER TABLE VMLGRUPOUSUARIO
   ADD CONSTRAINT VMLGRUPO_GRPUSR_FK FOREIGN KEY (GRUPO)
      REFERENCES VMLGRUPO (GRUPO);

ALTER TABLE VMLGRUPOUSUARIO
   ADD CONSTRAINT VMLUSUARIO_GRPUSR_FK FOREIGN KEY (USUARIO)
      REFERENCES VMLUSUARIO (USUARIO);

