Está en la página 1de 32

Unidad 1: Fase 1 - Modelamiento: Modelar, Diseñar y Desarrollar Bases de Datos

Relacionales

FELIPE NICKOLAS GARCIA DELGADO


SERGIO ARMANDO ROMERO ABRIL

CURSO DE BASES DE DATOS AVANZADAS

UNIVERSIDAD ABIERTA Y A DISTANCIA

BUCARAMANGA, SANTANDER

MARZO 2019
Tabla de contenido

Introducción...............................................................................................................................................3
Análisis de entidades..................................................................................................................................3
Departamentos..................................................................................................................................3
Estudiantes........................................................................................................................................4
Títulos...............................................................................................................................................4
Profesores.........................................................................................................................................4
Programas.........................................................................................................................................4
Prerequisitos.....................................................................................................................................5
Asignaturas.......................................................................................................................................5
Secciones..........................................................................................................................................5
Ofertas académicas...........................................................................................................................5
Asignaturas ofertas...........................................................................................................................6
Matriculas.........................................................................................................................................6
Notas.................................................................................................................................................6
Aulas.................................................................................................................................................7
Horarios............................................................................................................................................7
Análisis de relaciones.................................................................................................................................7
Estudiantes........................................................................................................................................7
Prerequisitos.....................................................................................................................................7
Asignaturas.......................................................................................................................................8
Ofertas académicas...........................................................................................................................8
Asignaturas ofertas...........................................................................................................................8
Matriculas.........................................................................................................................................8
Notas.................................................................................................................................................8
Horarios............................................................................................................................................9
Modelo entidad relación.............................................................................................................................9
Introducción

La creación de un modelo de base de datos es esencial para fabricar soluciones informáticas en donde
se requiera persistencia de datos, por dicho motivo es necesario llevar al cabo de forma exitosa las
etapas de análisis, diseño y desarrollo de un modelo que cumpla con las especificaciones requeridas a
partir de una problemática determinada.
El presente trabajo trata las distintas etapas nombradas para la oficina de registro y control UNAD, la
cual requiere ejecutar el proyecto.

Análisis de entidades

Departamentos

Entidad encargada de almacenar los datos relacionados a los departamentos de residencia de los
estudiantes.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de registro de departamento
nombre VARCHAR2(30) U Nombre de departamento

Estudiantes

Entidad encargada de almacenar los datos de estudiantes de la institución.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de registro de estudiante
identificacion INT U Numero de identificación de estudiante
nombre VARCHAR2(150) Nombre completo de estudiante
departamento INT FK Código único de departamento
Títulos

Entidad encargada de almacenar los diferentes títulos que poseen los estudiantes de la institución,
teniendo en cuenta que un estudiante puede tener varios títulos y un titulo puede ser adquirido por
varios estudiantes.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de titulo
descripcion VARCHAR2(50) U Descripción única del titulo

Profesores

Entidad encargada de almacenar la información básica de los profesores que realizan labores en la
institución.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de profesor
nombre VARCHAR2(150) Nombre completo de profesor

Programas

Entidad encargada de almacenar los datos relacionados a los distintos programas que ofrece la
institución educativa.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de programa
nombre VARCHAR2(50) U Nombre de programa académico

Prerequisitos

Entidad encargada de almacenar los datos correspondientes a los prerequisitos para aspirar a un
programa académico, de forma tal que un programa académico puede tener varios prerequisitos.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de prerequisito
descripcion VARCHAR2(200) Descripción del prerequisito
programa INT FK Código de programa al cual pertenece

Asignaturas

Entidad encargada de almacenar los datos de asignaturas pertenecientes a programas académicos, sin
embargo, una asignatura puede presentarse en varios programas.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de asignatura
nombre VARCHAR2(50) Nombre de asignatura
prerequisito INT FK Código de asignatura que es prerequisito

Secciones

Entidad encargada de almacenar los datos de secciones en donde la institución tiene acción.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de sección
nombre VARCHAR2(30) U Nombre único de sección

Ofertas académicas

Entidad encargada de almacenar las diferentes ofertas académicas que brinda la institución de forma
histórica.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de oferta académica
año INT U Año de oferta académica
semestre INT U Semestre del año en que se presenta la oferta
académica
seccion INT FK,U Código de sección en la cual se brinda la oferta

Asignaturas ofertas
Entidad encargada de almacenar los datos de las asignaturas con disponibilidad en las diferentes ofertas
académicas.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de asignatura disponible durante
determinada oferta académica
oferta INT FK,U Código de oferta en la cual se brinda la asignatura
asignatura INT FK,U Código de asignatura
profesor INT FK,U Código de profesor

Matriculas

Entidad encargada de almacenar la información de matrículas de clientes realizadas sobre alguna


asignatura disponible en alguna oferta determinada.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de matricula
estudiante INT FK,U Código de estudiante
asignatura INT FK,U Código de asignatura matriculada

Notas

Entidad encargada de almacenar las notas obtenidas por un estudiante en una materia matriculada en
determinada oferta académica.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de nota
calificacion NUMBER(2,1) Valor cuantitativo de la nota
matricula INT FK Código de matricula a la cual corresponde la nota

Aulas
Entidad encargada de almacenar la información de aulas de clase.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de aula de clase a nivel de aplicación
codigo VARCHAR2(10) U Código único de aula a nivel de institución

Horarios

Entidad encargada de almacenar los datos de horarios de clase en las diferentes aulas con relación a las
asignaturas brindadas en las ofertas académicas.

Columna Tipo de dato Constraint Descripción


id INT PK Código único de horario
asignatura INT FK,U Código de asignatura de oferta académica
aula INT FK,U Código de aula
dia_semana INT U Numero de día de la semana
hora TIME U Hora de inicio de clase

Análisis de relaciones

Estudiantes

Tabla referenciada Columna referenciada Atributo


departamentos id departamento

Prerequisitos

Tabla referenciada Columna referenciada Atributo


programas id programa

Asignaturas
Tabla referenciada Columna referenciada Atributo
asignaturas id prerequisito

Ofertas académicas

Tabla referenciada Columna referenciada Atributo


secciones id seccion

Asignaturas ofertas

Tabla referenciada Columna referenciada Atributo


ofertas id oferta
asignaturas id asignatura
profesores id profesor

Matriculas

Tabla referenciada Columna referenciada Atributo


estudiantes id estudiante
asignaturas_ofertas id asignatura

Notas

Tabla referenciada Columna referenciada Atributo


matriculas id matricula

Horarios

Tabla referenciada Columna referenciada Atributo


asignaturas_ofertas id asignatura
aulas id aula

Modelo entidad relación

SCRIPTS

CREATE TABLESPACE d_unad


DATAFILE 'tbs_unad_d_01.dat'
SIZE 10M
AUTOEXTEND ON NEXT 10M MAXSIZE 200M;
--
CREATE TABLESPACE i_unad
DATAFILE 'tbs_unad_i_01.dat'
SIZE 10M
AUTOEXTEND ON NEXT 10M MAXSIZE 200M;
--
CREATE TEMPORARY TABLESPACE t_unad
TEMPFILE 'tbs_unad_t_01.dat'
SIZE 10M
AUTOEXTEND ON;
--
ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
--
CREATE USER unad
IDENTIFIED BY vn2d2019
DEFAULT TABLESPACE d_unad
TEMPORARY TABLESPACE t_unad
QUOTA 10M on d_unad;
--
CREATE USER unad_cnx
IDENTIFIED BY vn2d2019
DEFAULT TABLESPACE d_unad
TEMPORARY TABLESPACE t_unad
QUOTA 10M on d_unad;
--
GRANT CONNECT TO unad;
GRANT CREATE TABLE TO UNAD;
GRANT ALTER ANY TABLE TO unad;
GRANT CONNECT TO unad_cnx;
GRANT CREATE SYNONYM TO unad_cnx;
--
CREATE ROLE r_unad_consulta;
--
GRANT r_unad_consulta TO unad_cnx;

CREATE TABLE departamentos (


id INT NOT NULL
, nombre VARCHAR2(30) NOT NULL
)
TABLESPACE d_unad;
--
COMMENT ON TABLE departamentos IS 'Entidad encargada de almacenar los datos relacionados a
los departamentos de residencia de los estudiantes';
COMMENT ON COLUMN departamentos.id IS 'Codigo unico de registro de departamento';
COMMENT ON COLUMN departamentos.nombre IS 'Nombre de departamento';
--
CREATE INDEX i_departamentos_id ON departamentos (id)
TABLESPACE i_unad;
--
CREATE UNIQUE INDEX ui_departamentos_nombre ON departamentos (nombre)
TABLESPACE i_unad;
--
ALTER TABLE departamentos
ADD CONSTRAINT c_departamentos_pk PRIMARY KEY (id)
USING INDEX i_departamentos_id;
--
--
CREATE TABLE estudiantes (
id INT NOT NULL
, identificacion INT NOT NULL
, nombre VARCHAR2(150) NOT NULL
, departamento INT NOT NULL
)
TABLESPACE d_unad;
--
COMMENT ON TABLE estudiantes IS 'Entidad encargada de almacenar los datos de estudiantes de la
institucion';
COMMENT ON COLUMN estudiantes.id IS 'Codigo unico de registro de estudiante';
COMMENT ON COLUMN estudiantes.identificacion IS 'Numero de identificacion de estudiante';
COMMENT ON COLUMN estudiantes.nombre IS 'Nombre completo de estudiante';
COMMENT ON COLUMN estudiantes.departamento IS 'Codigo unico de departamento';
--
CREATE INDEX i_estudiantes_id ON estudiantes (id)
TABLESPACE i_unad;
--
CREATE UNIQUE INDEX ui_estudiantes_ident ON estudiantes (identificacion)
TABLESPACE i_unad;
--
CREATE INDEX i_estudiantes_depto ON estudiantes (departamento)
TABLESPACE i_unad;
--
ALTER TABLE estudiantes
ADD CONSTRAINT c_estudiantes_pk PRIMARY KEY (id)
USING INDEX i_estudiantes_id;
--
ALTER TABLE estudiantes
ADD CONSTRAINT c_estudiantes_deptos_fk FOREIGN KEY (departamento)
REFERENCES departamentos (id);
--
--
CREATE TABLE titulos (
id INT NOT NULL
, descripcion VARCHAR2(50) NOT NULL
)
TABLESPACE d_unad;
--
COMMENT ON TABLE titulos IS 'Entidad encargada de almacenar los diferentes titulos que poseen
los estudiantes de la institucion, teniendo en cuenta que un estudiante puede tener varios titulos y un
titulo puede ser adquirido por varios estudiantes';
COMMENT ON COLUMN titulos.id IS 'Codigo unico de titulo';
COMMENT ON COLUMN titulos.id IS 'Descripcion unica del titulo';
--
CREATE INDEX i_titulos_id ON titulos (id)
TABLESPACE i_unad;
--
ALTER TABLE titulos
ADD CONSTRAINT c_titulos_pk PRIMARY KEY (id)
USING INDEX i_titulos_id;
--
--
CREATE TABLE estudiantes_titulos (
estudiante INT NOT NULL
, titulo INT NOT NULL
)
TABLESPACE d_unad;
--
CREATE INDEX i_estudiantes_titulos ON estudiantes_titulos (estudiante, titulo)
TABLESPACE i_unad;
--
CREATE INDEX i_esttit_estudiante ON estudiantes_titulos (estudiante)
TABLESPACE i_unad;
--
CREATE INDEX i_esttit_titulo ON estudiantes_titulos (titulo)
TABLESPACE i_unad;
--
ALTER TABLE estudiantes_titulos
ADD CONSTRAINT c_estudiantes_titulos_pk PRIMARY KEY (estudiante, titulo)
USING INDEX i_estudiantes_titulos;
--
ALTER TABLE estudiantes_titulos
ADD CONSTRAINT c_esttit_estudiantes_fk FOREIGN KEY (estudiante)
REFERENCES estudiantes (id);
--
ALTER TABLE estudiantes_titulos
ADD CONSTRAINT c_esttit_titulos_fk FOREIGN KEY (titulo)
REFERENCES titulos (id);
--
--
CREATE TABLE profesores (
id INT NOT NULL
, nombre VARCHAR2(150) NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE profesores IS 'Entidad encargada de almacenar la informacion basica de los
profesores que realizan labores en la institucion';
COMMENT ON COLUMN profesores.id IS 'Codigo unico de profesor';
COMMENT ON COLUMN profesores.nombre IS 'Nombre completo de profesor';
--
CREATE INDEX i_profesores_id ON profesores (id)
TABLESPACE i_unad;
--
ALTER TABLE profesores
ADD CONSTRAINT c_profesores_pk PRIMARY KEY (id)
USING INDEX i_profesores_id;
--
--
CREATE TABLE aulas (
id INT NOT NULL
, codigo VARCHAR2(10) NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE aulas IS 'Entidad encargada de almacenar la informacion de aulas de clase';
COMMENT ON COLUMN aulas.id IS 'Codigo unico de aula de clase a nivel de aplicacion';
COMMENT ON COLUMN aulas.codigo IS 'Codigo unico de aula a nivel de institucion';
--
CREATE INDEX i_aulas_id ON aulas (id)
TABLESPACE i_unad;
--
ALTER TABLE aulas
ADD CONSTRAINT c_aulas_pk PRIMARY KEY (id)
USING INDEX i_aulas_id;
--
--
CREATE TABLE secciones (
id INT NOT NULL
, nombre VARCHAR2(30) NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE secciones IS 'Entidad encargada de almacenar los datos de secciones en
donde la institucion tiene accion';
COMMENT ON COLUMN secciones.id IS 'Codigo unico de seccion';
COMMENT ON COLUMN secciones.nombre IS 'Nombre unico de seccion';
--
CREATE INDEX i_secciones_id ON secciones (id)
TABLESPACE i_unad;
--
ALTER TABLE secciones
ADD CONSTRAINT c_secciones_pk PRIMARY KEY (id)
USING INDEX i_secciones_id;
--
--
CREATE TABLE ofertas_academicas (
id INT NOT NULL
, ano NUMBER(4) NOT NULL
, semestre INT NOT NULL
, seccion INT NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE ofertas_academicas IS 'Entidad encargada de almacenar las diferentes ofertas
academicas que brinda la institucion de forma historica';
COMMENT ON COLUMN ofertas_academicas.id IS 'Codigo unio de oferta academica';
COMMENT ON COLUMN ofertas_academicas.ano IS 'Año de oferta academica';
COMMENT ON COLUMN ofertas_academicas.semestre IS 'Semestre del año en que se presenta la
oferta academica';
COMMENT ON COLUMN ofertas_academicas.seccion IS 'Codigo de seccion en la cual se brinda la
oferta';
--
CREATE INDEX i_ofertas_academicas_id ON ofertas_academicas (id)
TABLESPACE i_unad;
--
CREATE INDEX i_ofertas_academicas_sec ON ofertas_academicas (seccion)
TABLESPACE i_unad;
--
CREATE UNIQUE INDEX ui_ofertas_academicas ON ofertas_academicas (ano, semestre, seccion)
TABLESPACE i_unad;
--
ALTER TABLE ofertas_academicas
ADD CONSTRAINT c_ofertas_academicas_pk PRIMARY KEY (id)
USING INDEX i_ofertas_academicas_id;
--
ALTER TABLE ofertas_academicas
ADD CONSTRAINT c_ofertas_academicas_ck CHECK (semestre IN (1, 2));
--
ALTER TABLE ofertas_academicas
ADD CONSTRAINT c_ofertas_academicas_sec_fk FOREIGN KEY (seccion)
REFERENCES secciones (id);
--
--
CREATE TABLE programas (
id INT NOT NULL
, nombre VARCHAR2(50) NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE programas IS 'Entidad encargada de almacenar los datos relacionados a los
distintos programas que ofrece la institucion educativa';
COMMENT ON COLUMN programas.id IS 'Codigo unico de programa';
COMMENT ON COLUMN programas.nombre IS 'Nombre de programa academico';
--
CREATE INDEX i_programas_id ON programas (id)
TABLESPACE i_unad;
--
CREATE UNIQUE INDEX ui_programas_nombre ON programas (nombre)
TABLESPACE i_unad;
--
ALTER TABLE programas
ADD CONSTRAINT c_programas_pk PRIMARY KEY (id)
USING INDEX i_programas_id;
--
--
CREATE TABLE asignaturas (
id INT NOT NULL
, nombre VARCHAR2(50) NOT NULL
, prerequisito INT
) TABLESPACE d_unad;
--
COMMENT ON TABLE asignaturas IS 'Entidad encargada de almacenar los datos de asignaturas
pertenecientes a programas academicos, sin embargo una asignatura puede presentarse en varios
programas';
COMMENT ON COLUMN asignaturas.id IS 'Codigo unico de asignatura';
COMMENT ON COLUMN asignaturas.nombre IS 'Nombre de asignatura';
COMMENT ON COLUMN asignaturas.prerequisito IS 'Codigo de asignatura que es prerequisito';
--
CREATE INDEX i_asignaturas ON asignaturas (id)
TABLESPACE i_unad;
--
CREATE INDEX i_asignaturas_prereq ON asignaturas (prerequisito)
TABLESPACE i_unad;
--
ALTER TABLE asignaturas
ADD CONSTRAINT c_asignaturas_pk PRIMARY KEY (id)
USING INDEX i_asignaturas;
--
ALTER TABLE asignaturas
ADD CONSTRAINT c_asignaturas_prereq_fk FOREIGN KEY (prerequisito)

REFERENCES asignaturas (id);


--
--
CREATE TABLE programas_asignaturas (
programa INT NOT NULL
, asignatura INT NOT NULL
) TABLESPACE d_unad;
--
CREATE INDEX i_programas_asignaturas ON programas_asignaturas (programa, asignatura)
TABLESPACE i_unad;
--
CREATE INDEX i_proasi_programas ON programas_asignaturas (programa)
TABLESPACE i_unad;
--
CREATE INDEX i_proasi_asignaturas ON programas_asignaturas (asignatura)
TABLESPACE i_unad;
--
ALTER TABLE programas_asignaturas
ADD CONSTRAINT c_programas_asignaturas_pk PRIMARY KEY (programa, asignatura)
USING INDEX i_programas_asignaturas;
--
ALTER TABLE programas_asignaturas
ADD CONSTRAINT c_proasi_programas_fk FOREIGN KEY (programa)
REFERENCES programas (id);
--
ALTER TABLE programas_asignaturas
ADD CONSTRAINT c_proasi_asignaturas_fk FOREIGN KEY (asignatura)
REFERENCES asignaturas (id);
--
--
CREATE TABLE prerequisitos (
id INT NOT NULL
, descripcion VARCHAR2(200) NOT NULL
, programa INT NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE prerequisitos IS 'Entidad encargada de almacenar los datos correspondientes
a los prerequisitos para aspirar a un programa academico, de forma tal que un programa academico
puede tener varios prerequisitos';
COMMENT ON COLUMN prerequisitos.id IS 'Codigo unico de prerequisito';
COMMENT ON COLUMN prerequisitos.descripcion IS 'Descripcion del prerequisito';
COMMENT ON COLUMN prerequisitos.programa IS 'Codigo de programa al cual pertenece';
--
CREATE INDEX i_prerequisitos_id ON prerequisitos (id)
TABLESPACE i_unad;
--
CREATE INDEX i_prerequisitos_programa ON prerequisitos (programa)
TABLESPACE i_unad;
--
ALTER TABLE prerequisitos
ADD CONSTRAINT c_prerequisitos_pk PRIMARY KEY (id)
USING INDEX i_prerequisitos_id;
--
ALTER TABLE prerequisitos
ADD CONSTRAINT c_prerequisitos_programas_fk FOREIGN KEY (programa)
REFERENCES programas (id);
--
--
CREATE TABLE asignaturas_ofertas (
id INT NOT NULL
, oferta INT NOT NULL
, asignatura INT NOT NULL
, profesor INT NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE asignaturas_ofertas IS 'Entidad encargada de almacenar los datos de las
asignaturas con disponibilidad en las diferentes ofertas academicas';
COMMENT ON COLUMN asignaturas_ofertas.id IS 'Codigo unico de asignatura disponible durante
determinada oferta academica';
COMMENT ON COLUMN asignaturas_ofertas.oferta IS 'Codigo de oferta en la cual se brinda la
asignatura';
COMMENT ON COLUMN asignaturas_ofertas.asignatura IS 'Codigo de asignatura';
COMMENT ON COLUMN asignaturas_ofertas.profesor IS 'Codigo de profesor';
--
CREATE INDEX i_asignaturas_ofertas_id ON asignaturas_ofertas (id)
TABLESPACE i_unad;
--
CREATE UNIQUE INDEX ui_asiofe_ofeasipro ON asignaturas_ofertas (oferta, asignatura, profesor)
TABLESPACE i_unad;
--
ALTER TABLE asignaturas_ofertas
ADD CONSTRAINT c_asignaturas_ofertas_pk PRIMARY KEY (id)
USING INDEX i_asignaturas_ofertas_id;
--
ALTER TABLE asignaturas_ofertas
ADD CONSTRAINT c_asiofe_ofertas_fk FOREIGN KEY (oferta)
REFERENCES ofertas_academicas (id);
--
ALTER TABLE asignaturas_ofertas
ADD CONSTRAINT c_asiofe_asignaturas_fk FOREIGN KEY (asignatura)
REFERENCES asignaturas (id);
--
ALTER TABLE asignaturas_ofertas
ADD CONSTRAINT c_asiofe_profesores_fk FOREIGN KEY (profesor)
REFERENCES profesores (id);
--
--
CREATE TABLE matriculas (
id INT NOT NULL
, estudiante INT NOT NULL
, asignatura INT NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE matriculas IS 'Entidad encargada de almacenar la informacion de matriculas
de clientes realizadas sobre alguna asignatura disponible en alguna oferta determinada';
COMMENT ON COLUMN matriculas.id IS 'Codigo unico de matricula';
COMMENT ON COLUMN matriculas.estudiante IS 'Codigo de estudiante';
COMMENT ON COLUMN matriculas.asignatura IS 'Codigo de asignatura matriculada';
--
CREATE INDEX i_matriculas_id ON matriculas (id)
TABLESPACE i_unad;
--
CREATE UNIQUE INDEX ui_matriculas_estasi ON matriculas (estudiante, asignatura)
TABLESPACE i_unad;
--
ALTER TABLE matriculas
ADD CONSTRAINT c_matriculas_pk PRIMARY KEY (id)
USING INDEX i_matriculas_id;
--
ALTER TABLE matriculas
ADD CONSTRAINT c_matriculas_estudiantes_fk FOREIGN KEY (estudiante)
REFERENCES estudiantes (id);
--
ALTER TABLE matriculas
ADD CONSTRAINT c_matriculas_asignaturas_fk FOREIGN KEY (asignatura)
REFERENCES asignaturas_ofertas (id);
--
--
CREATE TABLE notas (
id INT NOT NULL
, calificacion NUMBER(2,1) NOT NULL
, matricula INT NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE notas IS 'Entidad encargada de almacenar las notas obtenidas por un
estudiante en una materia matriculada en determinada oferta academica';
COMMENT ON COLUMN notas.id IS 'Codigo unico de nota';
COMMENT ON COLUMN notas.calificacion IS 'Valor cuantitativo de la nota';
COMMENT ON COLUMN notas.matricula IS 'Codigo de matricula a la cual corresponde la nota';
--
CREATE INDEX i_notas_id ON notas (id)
TABLESPACE i_unad;
--
CREATE INDEX i_notas_matricula ON notas (matricula)

TABLESPACE i_unad;
--
ALTER TABLE notas
ADD CONSTRAINT c_notas_pk PRIMARY KEY (id)
USING INDEX i_notas_id;
--
ALTER TABLE notas
ADD CONSTRAINT c_notas_matriculas_fk FOREIGN KEY (matricula)
REFERENCES matriculas (id);
--
--
CREATE TABLE horarios (
id INT NOT NULL
, asignatura INT NOT NULL
, aula INT NOT NULL
, dia_semana INT NOT NULL
, hora NUMBER(2) NOT NULL
) TABLESPACE d_unad;
--
COMMENT ON TABLE horarios IS 'Entidad encargada de almacenar los datos de horarios de clase en
las diferentes aulas con relacion a las asignaturas brindadas en las ofertas academicas';
COMMENT ON COLUMN horarios.id IS 'Codigo unico de horario';
COMMENT ON COLUMN horarios.asignatura IS 'Codigo de asignatura de oferta academica';
COMMENT ON COLUMN horarios.aula IS 'Codigo de aula';
COMMENT ON COLUMN horarios.dia_semana IS 'Numero de dia de la semana';
COMMENT ON COLUMN horarios.hora IS 'Hora de inicio de clase';
--
CREATE INDEX i_horarios_id ON horarios (id)
TABLESPACE i_unad;
--
CREATE UNIQUE INDEX ui_horarios_asaudiho ON horarios (asignatura, aula, dia_semana, hora)
TABLESPACE i_unad;
--
ALTER TABLE horarios
ADD CONSTRAINT c_horarios_pk PRIMARY KEY (id)
USING INDEX i_horarios_id;
--
ALTER TABLE horarios
ADD CONSTRAINT c_horarios_asignaturas_fk FOREIGN KEY (asignatura)
REFERENCES asignaturas_ofertas (id);
--
ALTER TABLE horarios
ADD CONSTRAINT c_horarios_aulas_fk FOREIGN KEY (aula)
REFERENCES aulas (id);
--
ALTER TABLE horarios
ADD CONSTRAINT c_horarios_diasem_ck CHECK (dia_semana BETWEEN 1 AND 7);
--
ALTER TABLE horarios
ADD CONSTRAINT c_horarios_hora_ck CHECK (hora BETWEEN 1 AND 24);
--
GRANT SELECT ON departamentos TO r_unad_consulta;
GRANT SELECT ON estudiantes TO r_unad_consulta;
GRANT SELECT ON titulos TO r_unad_consulta;
GRANT SELECT ON estudiantes_titulos TO r_unad_consulta;
GRANT SELECT ON profesores TO r_unad_consulta;
GRANT SELECT ON aulas TO r_unad_consulta;
GRANT SELECT ON secciones TO r_unad_consulta;
GRANT SELECT ON ofertas_academicas TO r_unad_consulta;
GRANT SELECT ON programas TO r_unad_consulta;
GRANT SELECT ON asignaturas TO r_unad_consulta;
GRANT SELECT ON programas_asignaturas TO r_unad_consulta;
GRANT SELECT ON prerequisitos TO r_unad_consulta;
GRANT SELECT ON asignaturas_ofertas TO r_unad_consulta;
GRANT SELECT ON matriculas TO r_unad_consulta;
GRANT SELECT ON notas TO r_unad_consulta;
GRANT SELECT ON horarios TO r_unad_consulta;

CREATE OR REPLACE SYNONYM departamentos FOR unad.departamentos;


CREATE OR REPLACE SYNONYM estudiantes FOR unad.estudiantes;
CREATE OR REPLACE SYNONYM titulos FOR unad.titulos;
CREATE OR REPLACE SYNONYM estudiantes_titulos FOR unad.estudiantes_titulos;
CREATE OR REPLACE SYNONYM profesores FOR unad.profesores;
CREATE OR REPLACE SYNONYM aulas FOR unad.aulas;
CREATE OR REPLACE SYNONYM secciones FOR unad.secciones;
CREATE OR REPLACE SYNONYM ofertas_academicas FOR unad.ofertas_academicas;
CREATE OR REPLACE SYNONYM programas FOR unad.programas;
CREATE OR REPLACE SYNONYM asignaturas FOR unad.asignaturas;
CREATE OR REPLACE SYNONYM programas_asignaturas FOR unad.programas_asignaturas;
CREATE OR REPLACE SYNONYM prerequisitos FOR unad.prerequisitos;
CREATE OR REPLACE SYNONYM asignaturas_ofertas FOR unad.asignaturas_ofertas;
CREATE OR REPLACE SYNONYM matriculas FOR unad.matriculas;
CREATE OR REPLACE SYNONYM notas FOR unad.notas;
CREATE OR REPLACE SYNONYM horarios FOR unad.horarios;

SCRIPT POBLACION DE TABLAS


-- Creacion de departamentos
INSERT INTO departamentos (id, nombre)
VALUES (1, 'Amazonas');
INSERT INTO departamentos (id, nombre)
VALUES (2, 'Antioquia');
INSERT INTO departamentos (id, nombre)
VALUES (3, 'Arauca');
INSERT INTO departamentos (id, nombre)
VALUES (4, 'Atlántico');
INSERT INTO departamentos (id, nombre)
VALUES (5, 'Bolívar');
INSERT INTO departamentos (id, nombre)
VALUES (6, 'Boyacá');
INSERT INTO departamentos (id, nombre)
VALUES (7, 'Caldas');
INSERT INTO departamentos (id, nombre)
VALUES (8, 'Caquetá');
INSERT INTO departamentos (id, nombre)
VALUES (9, 'Casanare');
INSERT INTO departamentos (id, nombre)
VALUES (10, 'Cauca');
INSERT INTO departamentos (id, nombre)
VALUES (11, 'Cesar');
INSERT INTO departamentos (id, nombre)
VALUES (12, 'Chocó');
INSERT INTO departamentos (id, nombre)VALUES (13, 'Córdoba');

INSERT INTO departamentos (id, nombre)


VALUES (14, 'Cundinamarca');
INSERT INTO departamentos (id, nombre)
VALUES (15, 'Guainía');
INSERT INTO departamentos (id, nombre)
VALUES (16, 'Guaviare');
INSERT INTO departamentos (id, nombre)
VALUES (17, 'Huila');
INSERT INTO departamentos (id, nombre)
VALUES (18, 'La Guajira');
INSERT INTO departamentos (id, nombre)
VALUES (19, 'Magdalena');
INSERT INTO departamentos (id, nombre)
VALUES (20, 'Meta');
INSERT INTO departamentos (id, nombre)
VALUES (21, 'Nariño');
INSERT INTO departamentos (id, nombre)
VALUES (22, 'Norte de Santander');
INSERT INTO departamentos (id, nombre)
VALUES (23, 'Putumayo');
INSERT INTO departamentos (id, nombre)
VALUES (24, 'Quindío');
INSERT INTO departamentos (id, nombre)
VALUES (25, 'Risaralda');
INSERT INTO departamentos (id, nombre)
VALUES (26, 'San Andrés y Providencia');
INSERT INTO departamentos (id, nombre)
VALUES (27, 'Santander');

INSERT INTO departamentos (id, nombre)


VALUES (28, 'Sucre');
INSERT INTO departamentos (id, nombre)
VALUES (29, 'Tolima');
INSERT INTO departamentos (id, nombre)
VALUES (30, 'Valle del Cauca');
INSERT INTO departamentos (id, nombre)
VALUES (31, 'Vaupés');
INSERT INTO departamentos (id, nombre)
VALUES (32, 'Vichada');

-- Creacion de estudiantes
INSERT INTO estudiantes (id, identificacion, nombre, departamento)
VALUES (1, 1098345678, 'Adolfo Serrano', 27);
INSERT INTO estudiantes (id, identificacion, nombre, departamento)
VALUES (2, 1098342345, 'Lina Garcia', 24);
INSERT INTO estudiantes (id, identificacion, nombre, departamento)
VALUES (3, 1098125423, 'Ramiro Flores', 4);
INSERT INTO estudiantes (id, identificacion, nombre, departamento)
VALUES (4, 1098125343, 'Jesica Velandia', 30);

-- Creacion de titulos
INSERT INTO titulos (id, descripcion)
VALUES (1, 'Técnico en sistemas');
INSERT INTO titulos (id, descripcion)
VALUES (2, 'Tecnólogo ambiental');
INSERT INTO titulos (id, descripcion)
VALUES (3, 'Tecnólogo en desarrollo de software');
--

Creación de títulos de estudiantes


INSERT INTO estudiantes_titulos (estudiante, titulo)
VALUES (1, 1);
INSERT INTO estudiantes_titulos (estudiante, titulo)
VALUES (2, 1);
INSERT INTO estudiantes_titulos (estudiante, titulo)
VALUES (2, 3);
INSERT INTO estudiantes_titulos (estudiante, titulo)
VALUES (3, 2);
INSERT INTO estudiantes_titulos (estudiante, titulo)
VALUES (4, 3);

Creación de profesores
INSERT INTO profesores (id, nombre)
VALUES (1, 'Felipe Murcia');
INSERT INTO profesores (id, nombre)
VALUES (2, 'Andres Gomez');
INSERT INTO profesores (id, nombre)
VALUES (3, 'Melisa Figueroa');
INSERT INTO profesores (id, nombre)
VALUES (4, 'Mauricio Lopez');

Creación de aulas
INSERT INTO aulas (id, codigo)
VALUES (1, 'T001');
INSERT INTO aulas (id, codigo)
VALUES (2, 'T002');
INSERT INTO aulas (id, codigo)
VALUES (3, 'T003');
INSERT INTO aulas (id, codigo)
VALUES (4, 'T004');

Creación de secciones
INSERT INTO secciones (id, nombre)
VALUES (1, 'Sección Santander');
INSERT INTO secciones (id, nombre)
VALUES (2, 'Sección Quindío');
INSERT INTO secciones (id, nombre)
VALUES (3, 'Sección Atlántico');
INSERT INTO secciones (id, nombre)
VALUES (4, 'Sección Valle del Cauca');

Creación de ofertas académicas


INSERT INTO ofertas_academicas (id, ano, semestre, seccion)
VALUES (1, 2019, 1, 1);
INSERT INTO ofertas_academicas (id, ano, semestre, seccion)
VALUES (2, 2019, 1, 2);
INSERT INTO ofertas_academicas (id, ano, semestre, seccion)
VALUES (3, 2019, 1, 3);
INSERT INTO ofertas_academicas (id, ano, semestre, seccion)
VALUES (4, 2019, 1, 4);

Creación de programas
INSERT INTO programas (id, nombre)
VALUES (1, 'Ingeniería de sistemas');
INSERT INTO programas (id, nombre)
VALUES (2, 'Ingeniería ambiental');

Creación de asignaturas
INSERT INTO asignaturas (id, nombre, prerequisito)
VALUES (1, 'Probabilidad', NULL);
INSERT INTO asignaturas (id, nombre, prerequisito)
VALUES (2, 'Cálculo I', NULL);
INSERT INTO asignaturas (id, nombre, prerequisito)
VALUES (3, 'Algebra lineal', NULL);
INSERT INTO asignaturas (id, nombre, prerequisito)
VALUES (4, 'Quimica I', NULL);
INSERT INTO asignaturas (id, nombre, prerequisito)
VALUES (5, 'Diseño web', NULL);

Creación de asignaturas de programas


INSERT INTO programas_asignaturas (programa, asignatura)
VALUES (1, 1);
INSERT INTO programas_asignaturas (programa, asignatura)
VALUES (1, 2);
INSERT INTO programas_asignaturas (programa, asignatura)
VALUES (1, 3);
INSERT INTO programas_asignaturas (programa, asignatura)
VALUES (1, 5);
INSERT INTO programas_asignaturas (programa, asignatura)
VALUES (2, 4);

Creación de prerrequisitos
INSERT INTO prerequisitos (id, descripcion, programa)
VALUES (1, 'Bachillerato', 1);
INSERT INTO prerequisitos (id, descripcion, programa)
VALUES (2, 'Presentacion pruebas saber', 1);
INSERT INTO prerequisitos (id, descripcion, programa)
VALUES (3, 'Bachillerato', 2);
INSERT INTO prerequisitos (id, descripcion, programa)
VALUES (4, 'Presentacion pruebas saber', 2);

Creación de asignaturas de ofertas académicas


INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (1, 1, 1, 1);
INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (2, 1, 2, 1);
INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (3, 2, 1, 2);
INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (4, 2, 5, 2);
INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (5, 3, 4, 3);
INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (6, 4, 1, 4);
INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (7, 4, 2, 4);
INSERT INTO asignaturas_ofertas (id, oferta, asignatura, profesor)
VALUES (8, 4, 3, 4);

Creación de matrícula de materias


INSERT INTO matriculas (id, estudiante, asignatura)
VALUES (1, 1, 1);
INSERT INTO matriculas (id, estudiante, asignatura)
VALUES (2, 1, 2);
INSERT INTO matriculas (id, estudiante, asignatura)
VALUES (3, 2, 3);
INSERT INTO matriculas (id, estudiante, asignatura)
VALUES (4, 2, 4);
INSERT INTO matriculas (id, estudiante, asignatura)

VALUES (5, 3, 5);


INSERT INTO matriculas (id, estudiante, asignatura)
VALUES (6, 4, 6);
INSERT INTO matriculas (id, estudiante, asignatura)
VALUES (7, 4, 7);
INSERT INTO matriculas (id, estudiante, asignatura)
VALUES (8, 4, 8);

Creación de notas
INSERT INTO notas (id, calificacion, matricula)
VALUES (1, 3.4, 1);
INSERT INTO notas (id, calificacion, matricula)
VALUES (2, 4.4, 1);
INSERT INTO notas (id, calificacion, matricula)
VALUES (3, 4.3, 1);
INSERT INTO notas (id, calificacion, matricula)
VALUES (4, 4.2, 2);
INSERT INTO notas (id, calificacion, matricula)
VALUES (5, 4.0, 2);
INSERT INTO notas (id, calificacion, matricula)
VALUES (6, 2.8, 2);
INSERT INTO notas (id, calificacion, matricula)
VALUES (7, 3.1, 3);
INSERT INTO notas (id, calificacion, matricula)
VALUES (8, 3.5, 3);
INSERT INTO notas (id, calificacion, matricula)
VALUES (9, 3.6, 3);
INSERT INTO notas (id, calificacion, matricula)

VALUES (10, 4.7, 4);


INSERT INTO notas (id, calificacion, matricula)
VALUES (11, 5.0, 4);
INSERT INTO notas (id, calificacion, matricula)
VALUES (12, 3.2, 4);
INSERT INTO notas (id, calificacion, matricula)
VALUES (13, 3.3, 5);
INSERT INTO notas (id, calificacion, matricula)
VALUES (14, 4.6, 5);
INSERT INTO notas (id, calificacion, matricula)
VALUES (15, 4.8, 5);
INSERT INTO notas (id, calificacion, matricula)
VALUES (16, 5.0, 6);
INSERT INTO notas (id, calificacion, matricula)
VALUES (17, 3.7, 6);
INSERT INTO notas (id, calificacion, matricula)
VALUES (18, 3.9, 6);
INSERT INTO notas (id, calificacion, matricula)
VALUES (19, 4.2, 7);
INSERT INTO notas (id, calificacion, matricula)
VALUES (20, 4.3, 7);
INSERT INTO notas (id, calificacion, matricula)
VALUES (21, 2.6, 7);
INSERT INTO notas (id, calificacion, matricula)
VALUES (22, 4.0, 8);
INSERT INTO notas (id, calificacion, matricula)
VALUES (23, 5.0, 8);
INSERT INTO notas (id, calificacion, matricula)

VALUES (24, 3.6, 8);

Creación de horarios
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (1, 1, 1, 2, 8);
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (2, 2, 1, 3, 10);
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (3, 3, 2, 2, 8);
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (4, 4, 2, 4, 9);
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (5, 5, 3, 3, 6);
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (6, 6, 4, 2, 7);
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (7, 7, 4, 4, 10);
INSERT INTO horarios (id, asignatura, aula, dia_semana, hora)
VALUES (8, 8, 4, 5, 8);

CONSULTA DE LA BASE DE DATOS

SELECT e.identificacion,e.nombre estudiante, a.nombre asignatura, o.ano, o.semestre,p.nombre


programa, TRUNC(AVG(n.calificacion), 1) nota
FROM matriculas m
, estudiantes e
,asignaturas_ofertas s
,ofertas_academicas o
,asignaturas a
,programas_asignaturas i
, programas p
, notas n
WHERE m.estudiante = e.id
AND m.asignatura = s.id
AND s.oferta = o.id
AND s.asignatura = a.id
AND a.id = i.asignatura
AND i.programa = p.id
AND m.id = n.matricula
GROUP BY e.identificacion
,e.nombre
,a.nombre
,o.ano
,o.semestre
, p.nombre
ORDER BY e.nombre,a.nombre,o.ano,o.semestre;

Conclusiones

Al realizar este trabajo nos permite saber la importancia de hacer ejercicio completo y juicioso en
cuanto a la creación, modelamiento, relación de la misma ya que desde allí parte un buen proceso para
la seguridad, gestión y procesamiento de la información. Sirviendo esto para garantizar siempre la
disponibilidad de la información allí registrada.

Debido a que hoy en día la información de cualquier entidad es su activo más importante se requiere
tener claro estos conceptos y conocimientos para una buena gestión de las bases de datos de las
mismas. Por medio de los GBD se pueden almacenar grandes cantidades de información de forma
segura y estable es la mejor opción en cuanto a la guarda de los datos que se requieran.

También podría gustarte