/*==============================================================*/
/* DBMS name:      ORACLE Version 8i2 (8.1.6)                   */
/* Created on:     24/10/2006 12:25:31                          */
/*==============================================================*/


/*==============================================================*/
/* 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
);

/*==============================================================*/
/* Index: VMLCORREO_ADJUNTOS_FK                                 */
/*==============================================================*/
create index VMLCORREO_ADJUNTOS_FK on VMLADJUNTOS (
   CORREO ASC
);

/*==============================================================*/
/* 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
);

/*==============================================================*/
/* 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
);

/*==============================================================*/
/* Index: VMLCORREO_COPIAS_FK                                   */
/*==============================================================*/
create index VMLCORREO_COPIAS_FK on VMLCOPIAS (
   CORREO ASC
);

/*==============================================================*/
/* Index: VMLUSUARIO_COPIAS_FK                                  */
/*==============================================================*/
create index VMLUSUARIO_COPIAS_FK on VMLCOPIAS (
   DESTINO ASC
);

/*==============================================================*/
/* Table: VMLCORREO                                             */
/*==============================================================*/
create table VMLCORREO  (
   CORREO               NUMBER(7)                       not null,
   FECHA                DATE                            not null,
   ORIGEN               VARCHAR2(30)                    not null,
   DESTINO              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')),
   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
);

/*==============================================================*/
/* Index: VMLUSUARIO_CORREODESTINO_FK                           */
/*==============================================================*/
create index VMLUSUARIO_CORREODESTINO_FK on VMLCORREO (
   DESTINO 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
);

/*==============================================================*/
/* 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 VMLCOPIAS
   add constraint VMLCORREO_COPIAS_FK foreign key (CORREO)
      references VMLCORREO (CORREO);

alter table VMLCOPIAS
   add constraint VMLUSUARIO_COPIAS_FK foreign key (DESTINO)
      references VMLUSUARIO (USUARIO);

alter table VMLCORREO
   add constraint VMLUSUARIO_CORREODESTINO_FK foreign key (DESTINO)
      references VMLUSUARIO (USUARIO);

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);

