/*==============================================================*/
/* DBMS name:      ORACLE Version 8i2 (8.1.6)                   */
/* Created on:     28/02/2006 11:54:13                          */
/*==============================================================*/


/*==============================================================*/
/* Table: ASISTEGRUPO                                           */
/*==============================================================*/
create table ASISTEGRUPO  (
   GRUPO                NUMBER(10)                      not null,
   ASISTENTE            VARCHAR2(25)                    not null,
   HORAS                NUMBER(4,2)                     not null,
   constraint ASISTEGRUPO_PK primary key (GRUPO)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: ASISTENTE_ASIGRUPO_FK                                 */
/*==============================================================*/
create index ASISTENTE_ASIGRUPO_FK on ASISTEGRUPO (
   ASISTENTE ASC
);

/*==============================================================*/
/* Table: ASISTENTE                                             */
/*==============================================================*/
create table ASISTENTE  (
   ASISTENTE            VARCHAR2(25)                    not null,
   NOMBRE               VARCHAR2(30)                    not null,
   APELLIDOS            VARCHAR2(30)                    not null,
   constraint ASISTENTE_PK primary key (ASISTENTE)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Table: ASISTEPROYECTO                                        */
/*==============================================================*/
create table ASISTEPROYECTO  (
   PROYECTO             NUMBER(10)                      not null,
   ASISTENTE            VARCHAR2(25)                    not null,
   HORAS                NUMBER(4,2)                     not null,
   constraint ASISTEPROYECTO_PK primary key (PROYECTO, ASISTENTE)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: ASISTENTE_ASIPROYECTO_FK                              */
/*==============================================================*/
create index ASISTENTE_ASIPROYECTO_FK on ASISTEPROYECTO (
   ASISTENTE ASC
);

/*==============================================================*/
/* Table: AULA                                                  */
/*==============================================================*/
create table AULA  (
   AULA                 NUMBER(10)                      not null,
   EDIFICIO             VARCHAR2(5)                     not null,
   NUMERO               NUMBER(2)                       not null,
   constraint AULA_PK primary key (AULA)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Table: CURSO                                                 */
/*==============================================================*/
create table CURSO  (
   CURSO                VARCHAR2(6)                     not null,
   TITULO               VARCHAR2(60)                    not null,
   COORDINADOR          NUMBER(10)                      not null,
   HORAS                NUMBER(4,2)                     not null,
   CREDITOS             NUMBER(2)                       not null,
   constraint CURSO_PK primary key (CURSO)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: PROFESOR_CURSO_COORDINADOR_FK                         */
/*==============================================================*/
create index PROFESOR_CURSO_COORDINADOR_FK on CURSO (
   COORDINADOR ASC
);

/*==============================================================*/
/* Table: GRUPO                                                 */
/*==============================================================*/
create table GRUPO  (
   GRUPO                NUMBER(10)                      not null,
   CURSO                VARCHAR2(6)                     not null,
   CODIGO               VARCHAR2(3)                     not null,
   CICLO                CHAR(1)                         not null
      constraint GRUPO_CICLO_CK check (CICLO in ('1','2','V')),
   CUPO                 NUMBER(2)                       not null,
   PROFESOR             NUMBER(10)                      not null,
   constraint GRUPO_PK primary key (GRUPO)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: CURSO_GRUPO_FK                                        */
/*==============================================================*/
create index CURSO_GRUPO_FK on GRUPO (
   CURSO ASC
);

/*==============================================================*/
/* Index: PROFESOR_GRUPO_IMPARTIR_FK                            */
/*==============================================================*/
create index PROFESOR_GRUPO_IMPARTIR_FK on GRUPO (
   PROFESOR ASC
);

/*==============================================================*/
/* Table: HORARIOGRUPO                                          */
/*==============================================================*/
create table HORARIOGRUPO  (
   GRUPO                NUMBER(10)                      not null,
   DIA                  CHAR(1)                         not null,
   HORAENT              NUMBER(4,2)                     not null,
   HORASAL              NUMBER(4,2)                     not null,
   AULA                 NUMBER(10)                      not null,
   constraint HORARIOGRUPO_PK primary key (GRUPO, DIA)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: AULA_HORARIO_FK                                       */
/*==============================================================*/
create index AULA_HORARIO_FK on HORARIOGRUPO (
   AULA ASC
);

/*==============================================================*/
/* Table: NOMBRAMIENTO                                          */
/*==============================================================*/
create table NOMBRAMIENTO  (
   NOMBRAMIENTO         NUMBER(10)                      not null,
   PROFESOR             NUMBER(10)                      not null,
   TIPO                 CHAR(1)                         not null
      constraint NOMBRAMIENTO_TIPO_CK check (TIPO in ('H','J')),
   JORNADA              VARCHAR2(30)                    not null,
   FECHAINI             DATE                            not null,
   FECHAVEN             DATE,
   constraint NOMBRAMIENTO_PK primary key (NOMBRAMIENTO)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: NOMBRAMIENTO_PROFESOR_FK                              */
/*==============================================================*/
create index NOMBRAMIENTO_PROFESOR_FK on NOMBRAMIENTO (
   PROFESOR ASC
);

/*==============================================================*/
/* Table: OFICINA                                               */
/*==============================================================*/
create table OFICINA  (
   OFICINA              NUMBER(5)                       not null,
   NUMERO               NUMBER(2)                       not null,
   EDIFICIO             VARCHAR2(5)                     not null,
   EXTENSION            NUMBER(5)                       not null,
   CUPO                 NUMBER(2)                       not null,
   constraint OFICINA_PK primary key (OFICINA)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Table: PROFESOR                                              */
/*==============================================================*/
create table PROFESOR  (
   PROFESOR             NUMBER(10)                      not null,
   CEDULA               VARCHAR2(25)                    not null,
   OFICINA              NUMBER(5),
   NOMBRE               VARCHAR2(30)                    not null,
   APELLIDO             VARCHAR2(30)                    not null,
   GRADO                CHAR(1)                         not null
      constraint PROFESOR_GRADO_CK check (GRADO in ('B','L','D','M')),
   CASILLERO            NUMBER(5),
   SEXO                 CHAR(1)                         not null
      constraint PROFESOR_SEXO_CK check (SEXO in ('M','F')),
   EMPLEADO             VARCHAR2(15)                    not null,
   constraint PROFESOR_PK primary key (PROFESOR)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: OFICINA_PROFESOR_FK                                   */
/*==============================================================*/
create index OFICINA_PROFESOR_FK on PROFESOR (
   OFICINA ASC
);

/*==============================================================*/
/* Table: PROYECTO                                              */
/*==============================================================*/
create table PROYECTO  (
   PROYECTO             NUMBER(10)                      not null,
   TIPO                 VARCHAR2(3)                     not null,
   DEPARTAMENTO         VARCHAR2(3)                     not null,
   CLASIFICACION        VARCHAR2(30)                    not null,
   CODIGO               VARCHAR2(30)                    not null,
   TITULO               VARCHAR2(60)                    not null,
   FECHAINI             DATE                            not null,
   FECHAVEN             DATE,
   constraint PROYECTO_PK primary key (PROYECTO)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Table: PROYECTOPROFESOR                                      */
/*==============================================================*/
create table PROYECTOPROFESOR  (
   PROFESOR             NUMBER(10)                      not null,
   PROYECTO             NUMBER(10)                      not null,
   LABOR                VARCHAR2(30)                    not null,
   TASA                 NUMBER(5,2)                     not null,
   constraint PROYECTOPROFESOR_PK primary key (PROFESOR, PROYECTO)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

/*==============================================================*/
/* Index: PROYECTO_PROYPROF_FK                                  */
/*==============================================================*/
create index PROYECTO_PROYPROF_FK on PROYECTOPROFESOR (
   PROYECTO ASC
);

/*==============================================================*/
/* Table: TELEFONO                                              */
/*==============================================================*/
create table TELEFONO  (
   PROFESOR             NUMBER(10)                      not null,
   TIPO                 CHAR(1)                         not null
      constraint TELEFONO_TIPO_CK check (TIPO in ('M','O','C')),
   TELEFONO             VARCHAR2(16)                    not null,
   constraint TELEFONO_PK primary key (PROFESOR, TELEFONO, TIPO)
)
initrans 1
storage
(
   initial 10K
   next 10K
);

alter table ASISTEGRUPO
   add constraint ASISTENTE_ASIGRUPO_FK foreign key (ASISTENTE)
      references ASISTENTE (ASISTENTE);

alter table ASISTEGRUPO
   add constraint GRUPO_ASIGRUPO_FK foreign key (GRUPO)
      references GRUPO (GRUPO);

alter table ASISTEPROYECTO
   add constraint ASISTENTE_ASIPROYECTO_FK foreign key (ASISTENTE)
      references ASISTENTE (ASISTENTE);

alter table ASISTEPROYECTO
   add constraint PROYECTO_ASIPROYECTO_FK foreign key (PROYECTO)
      references PROYECTO (PROYECTO);

alter table CURSO
   add constraint PROFESOR_CURSO_COORDINADOR_FK foreign key (COORDINADOR)
      references PROFESOR (PROFESOR);

alter table GRUPO
   add constraint CURSO_GRUPO_FK foreign key (CURSO)
      references CURSO (CURSO);

alter table GRUPO
   add constraint PROFESOR_GRUPO_IMPARTIR_FK foreign key (PROFESOR)
      references PROFESOR (PROFESOR);

alter table HORARIOGRUPO
   add constraint AULA_HORARIO_FK foreign key (AULA)
      references AULA (AULA);

alter table HORARIOGRUPO
   add constraint GRUPO_HORARIO_FK foreign key (GRUPO)
      references GRUPO (GRUPO);

alter table NOMBRAMIENTO
   add constraint NOMBRAMIENTO_PROFESOR_FK foreign key (PROFESOR)
      references PROFESOR (PROFESOR);

alter table PROFESOR
   add constraint OFICINA_PROFESOR_FK foreign key (OFICINA)
      references OFICINA (OFICINA);

alter table PROYECTOPROFESOR
   add constraint PROFESOR_PROYPROF_FK foreign key (PROFESOR)
      references PROFESOR (PROFESOR);

alter table PROYECTOPROFESOR
   add constraint PROYECTO_PROYPROF_FK foreign key (PROYECTO)
      references PROYECTO (PROYECTO);

alter table TELEFONO
   add constraint PROFESOR_TELEFONO_FK foreign key (PROFESOR)
      references PROFESOR (PROFESOR);

