Proyecto Inf-272
Proyecto Inf-272
SISTEMA DE GESTION
PREUNIVERSITARIO
2021
INTRODUCCION
OBJETIVOS
Objetivo general
Desarrollar una base de datos para el sistema de gestión del curso preuniversitario.
Objetivos específicos
Desarrollar el modelo entidad relación de la base de datos
Pasar al modelo Relacional (Diseño Lógico)
Realizar el diseño Físico (PostgreSQL)
Aplicación de uso del motor (Interfaz)
Limitaciones
Los límites del proyecto se basan de acuerdo a la problemática planteada inscripción
de alumnos, registro de docentes, y designar las materias que dictan los mismos,
asignación de las notas por cada materia a los estudiantes.
Tiene por objetivo proveer un lenguaje común entre el autor de dichos datos y sus
posibles usuarios.
TABLA SEXO
Columna Tipo de dato Descripcion
PK id_sexo char(1) Identificación sexo
nom_sexo varchar(10) Nombre sexo
TABLA DEPARTAMENTO
Columna Tipo de dato Descripcion
PK id_dep varchar(5) Identificación departamento
nom_dep varchar(20) Nombre del departamento
TABLA PERSONA
Columna Tipo de dato Descripcion
PK CI int Identificación persona
nombre varchar(20) Nombre
ap_pat varchar(40) apellido paterno
ap_mat varchar(40) apellido materno
telefono int numero telefónico
fechanac date fecha de nacimiento
FK id_dep varchar(5) departamento que nacio
FK id_sexo char(1) tipo de sexo
TABLA ESTUDIANTE
Columna Tipo de dato Descripcion
PK id_est int Identificación estudiante
PK CI int Identificacion persona
FK
nro_matr int numero de matricula asignada
FK id_carr int identificador carrera
fecha_matr date dia de la matriculacion
periodo varchar(7) periodo de matriculacion
TABLA FACULTAD
Columna Tipo de dato Descripcion
PK id_fac int Identificación facultad
nombre varchar(40) Nombre de la facultad
TABLA DOCENTE
Columna Tipo de dato Descripcion
PK id_doc int Identificación docente
PK CI int Identificacion persona
FK
grado_acad varchar(20) grado del titulo academico
sueldo int salario que gana
fecha_ing date fecha que ingreso
TABLA CARRERA
Columna Tipo de dato Descripcion
PK id_carr int Identificación carrera
nombre varchar(40) Nombre de la carrera
mision varchar(100) Mision de la carrera
vision varchar(100) Vision de la carrera
FK id_fac int facultad a la que pertenece
nro_resol int resolución de la carrera
TABLA MATERIA
Columna Tipo de dato Descripcion
PK id_mat int Identificación de la materia
nombre varchar(40) Nombre de la materia
carga_hor int carga horaria de la materia
sigla varchar(6) sigla de la materia
FK id_doc int docente que coordina materia
TABLA DICTA
Columna Tipo de dato Descripcion
PK id_doc int Identificación docente
FK
PK id_mat int Identificacion materia
FK
PK id_paralelo varchar(1) Identificacion paralelo
FK
TABLA MATERIA_CARRERA
Columna Tipo de dato Descripcion
PK id_carr int Identificación de la carrera
FK
PK id_mat int Identificación de la materia
FK
TABLA PASA
Columna Tipo de dato Descripcion
PK id_est int Identificación estudiante
FK
PK id_mat int Identificacion de la materia
FK
PK id_paralelo varchar(1) Identificacion paralelo
FK
calif_final int nota de la materia y paralelo
TABLA PARALELO
Columna Tipo de dato Descripcion
PK id_paralelo varchar(1) Identificación paralelo
PK id_mat int Identificacion materia
FK
turno varchar(10) turno del paralelo
horario varchar(50) horario del paralelo y materia
MODELO RELACIONAL
Esquema de la base de Datos
Una vez obtenido el modelo E-R se realizó el traspaso al modelo relacional utilizando
las reglas definidas, con lo cual el esquema de la base de datos quedo de la siguiente
forma.
Integridad Referencial
Se denomina integridad referencial y consiste en que los datos que referencian otros
(claves foráneas) deben ser correctos. La integridad referencial hace que el sistema
gestor de la base de datos se asegure de que no haya en las claves foráneas valores
que no estén en la tabla principal.
Normalización
Veremos 3 de las tablas con más atributos para ver si se encuentran normalizadas las
tablas a revisar son: PERSONA, CARRERA, MATERIA.
Revisión de la 2FN
PERSONA (CI, nombre, ap_pat, ap_mat, teléfono, fechanac, id_dep, id_sexo)
Por definición tenemos que la clave primaria debe determinar al resto de los
atributos por lo cual hacemos el análisis
CI nombre, ap_pat ,ap_mat, teléfono, fechanac, id_dep, id_sexo
Por lo cual se determina que esta en 2FN.
Revisión de la 3FN
PERSONA (CI, nombre, ap_pat, ap_mat, teléfono, fechanac, id_dep, id_sexo)
Por definición tenemos que esta en 3FN cuando no hay dependencias
transitivas por lo cual al revisar las columnas vemos que todas dependen de la
clave primaria CI
Revisión de la 2FN
CARRERA (id_carr, nombre, misión, vision, id_fac, nro_resol)
Por definición tenemos que la clave primaria debe determinar al resto de los
atributos por lo cual hacemos el análisis
id_ carr nombre, misión, vision, id_fac, nro_resol
Por lo cual se determina que está en 2FN.
Revisión de la 3FN
CARRERA (id_carr, nombre, misión, vision, id_fac, nro_resol)
Por definición tenemos que está en 3FN cuando no hay dependencias
transitivas por lo cual al revisar las columnas vemos que todas dependen de la
clave primaria id_carr
Revisión de la 2FN
MATERIA (id_mat, nombre, carga_hor, sigla,, id_doc)
Por definición tenemos que la clave primaria debe determinar al resto de los
atributos por lo cual hacemos el análisis
id_ mat nombre carga_hor, sigla,, id_doc
Por lo cual se determina que está en 2FN.
Revisión de la 3FN
MATERIA (id_mat, nombre, carga_hor, sigla,, id_doc)
Por definición tenemos que está en 3FN cuando no hay dependencias
transitivas por lo cual al revisar las columnas vemos que todas dependen de la
clave primaria id_mat
DISEÑO FISICO
Implementación de la BD (SGBD)
Inicialmente procederemos a la creación de la base de datos llamada “bdpreuniv”.
Una vez terminando de realizar los scripts de la base ded datos se vio que no sufrio
alteraciones ni rrrores en el diseño que se implemento.
DICCIONARIO DE DATOS
Anteriormente vimos que la base de datos se encontraba normalizada, por lo cual las
tablas del diccionario de datos no sufrieron ningún cambio como se podrá ver a
continuación:
TABLA SEXO
Columna Tipo de dato Descripcion
PK id_sexo char(1) Identificación sexo
nom_sexo varchar(10) Nombre sexo
TABLA DEPARTAMENTO
Columna Tipo de dato Descripcion
PK id_dep varchar(5) Identificación departamento
nom_dep varchar(20) Nombre del departamento
TABLA PERSONA
Columna Tipo de dato Descripcion
PK CI int Identificación persona
nombre varchar(20) Nombre
ap_pat varchar(40) apellido paterno
ap_mat varchar(40) apellido materno
telefono int numero telefónico
fechanac date fecha de nacimiento
FK id_dep varchar(5) departamento que nacio
FK id_sexo char(1) tipo de sexo
TABLA ESTUDIANTE
Columna Tipo de dato Descripcion
PK id_est int Identificación estudiante
PK CI int Identificacion persona
FK
nro_matr int numero de matricula asignada
FK id_carr int identificador carrera
fecha_matr date dia de la matriculacion
periodo varchar(7) periodo de matriculacion
TABLA FACULTAD
Columna Tipo de dato Descripcion
PK id_fac int Identificación facultad
nombre varchar(40) Nombre de la facultad
TABLA DOCENTE
Columna Tipo de dato Descripcion
PK id_doc int Identificación docente
PK CI int Identificacion persona
FK
grado_acad varchar(20) grado del titulo academico
sueldo int salario que gana
fecha_ing date fecha que ingreso
TABLA CARRERA
Columna Tipo de dato Descripcion
PK id_carr int Identificación carrera
nombre varchar(40) Nombre de la carrera
mision varchar(100) Mision de la carrera
vision varchar(100) Vision de la carrera
FK id_fac int facultad a la que pertenece
nro_resol int resolución de la carrera
TABLA MATERIA
Columna Tipo de dato Descripcion
PK id_mat int Identificación de la materia
nombre varchar(40) Nombre de la materia
carga_hor int carga horaria de la materia
sigla varchar(6) sigla de la materia
FK id_doc int docente que coordina materia
TABLA DICTA
Columna Tipo de dato Descripcion
PK id_doc int Identificación docente
FK
PK id_mat int Identificacion materia
FK
PK id_paralelo varchar(1) Identificacion paralelo
FK
TABLA MATERIA_CARRERA
Columna Tipo de dato Descripcion
PK id_carr int Identificación de la carrera
FK
PK id_mat int Identificación de la materia
FK
TABLA PASA
Columna Tipo de dato Descripcion
PK id_est int Identificación estudiante
FK
PK id_mat int Identificacion de la materia
FK
PK id_paralelo varchar(1) Identificacion paralelo
FK
calif_final int nota de la materia y paralelo
TABLA PARALELO
Columna Tipo de dato Descripcion
PK id_paralelo varchar(1) Identificación paralelo
PK id_mat int Identificacion materia
FK
turno varchar(10) turno del paralelo
horario varchar(50) horario del paralelo y materia
$$
LANGUAGE SQL;
SELECT inscribir_est(9908791,'FATIMA','QUISPE','VENEGAS',79862135,'2002-10-
12','LP','F',100,175842,1000,'2021-01-12','SEGUNDO');
SELECT inscribir_est(12828914,'PABLO','HUANCA','ZARATE',64453124,'2001-06-
16','LP','M',101,175843,1000,'2021-01-13','SEGUNDO');
SELECT inscribir_est(12828995,'SERGIO','HUARAHUARA','SAENZ',79862135,'2000-10-
07','LP','M',102,175844,1001,'2021-01-12','SEGUNDO');
select * from persona;
SELECT * FROM estudiante;
------FUNCION PARA REGISTRAR AL docente------
CREATE OR REPLACE FUNCTION reg_doc(_ci INT,_nom VARCHAR,_pat varchar,_mat
varchar,_tele int,_fechanac date,_dep varchar,_sexo varchar,_iddoc int,_grado
varchar,_suel int,_fechaing date) returns varchar
as
$$
insert into persona(ci,nombre,ap_pat,ap_mat,telefono,fechanac,id_dep,id_sexo)
values (_ci,_nom,_pat,_mat,_tele,_fechanac,_dep,_sexo);
SELECT reg_doc(9908478,'ROGELIO','QUISPE','ROJAS',69982456,'1984-10-
24','CB','M',200,'MAGISTER',4000,'2020-10-27');
SELECT reg_doc(9908778,'RUBEN','HUALLPA','FLORES',70168458,'1994-11-
24','LP','M',201,'MAGISTER',4000,'2020-10-27');
SELECT reg_doc(9918478,'MARCO','CHURATA','SARDINAS',67851246,'1989-10-
01','TJ','M',202,'DOCTORADO',6000,'2020-10-27');
SELECT reg_doc(9518478,'JUAN','HURA','SARDINAS',67485246,'1980-01-
01','LP','M',203,'LICENCIATURA',3000,'2020-10-28');
SELECT reg_doc(9512478,'CARLOS','LOPEZ','COLQUE',67851714,'1990-04-
11','LP','M',204,'LICENCIATURA',3000,'2020-10-28');
SELECT reg_doc(9534781,'PEDRO','HUARACHI','SANS',67891846,'1992-04-
18','LP','M',205,'DOCTORADO',6000,'2020-09-27');
$$
LANGUAGE SQL;
select reg_dicta(202,1,'B');
select reg_dicta(201,1,'A');
select reg_dicta(203,3,'A');
select reg_dicta(204,2,'A');
------FUNCION PARA REGISTRAR MATERIAS A UNA CARRERA------
CREATE OR REPLACE FUNCTION reg_mat_car(_idcarr int,_idmat int) returns varchar
as
$$
insert into materia_carrera(id_carr,id_mat)
values (_idcarr,_idmat);
SELECT 'REGISTRADO';
$$
LANGUAGE SQL;
select reg_mat_car(1000,1);
select reg_mat_car(1000,2);
select reg_mat_car(1000,3);
select reg_mat_car(1000,5);
select reg_mat_car(1001,1);
select reg_mat_car(1001,2);
select reg_mat_car(1001,4);
select reg_mat_car(1001,5);
select * from materia_carrera;
------funcion para el registro de estudiantes a sus materias------
CREATE OR REPLACE FUNCTION reg_pasa(_idest int,_idmat int,_idpar varchar) returns
varchar
as
$$
insert into pasa(id_est,id_mat,id_paralelo)
values (_idest,_idmat,_idpar);
SELECT 'REGISTRADO';
$$
LANGUAGE SQL;
select reg_pasa(100,1,'A');
select reg_pasa(100,2,'A');
select reg_pasa(100,3,'A');
Ah ora utilizaremos las funciones para listar los estudiantes inscritos, asi como ver
docentes contratados y conocer las materias que X estudiante esta tomando:
-----LISTADO DE ESTUDIANTES INSCRITOS AL PREUNIVERSITTARIO-----
CREATE FUNCTION listarest() RETURNS SETOF persona AS
$$
DECLARE
reg RECORD;
BEGIN
FOR REG IN SELECT xp.* FROM estudiante xe,persona
xp where xe.ci=xp.ci LOOP
RETURN NEXT reg;
END LOOP;
RETURN;
END
$$
LANGUAGE 'plpgsql'
SELECT listarest();
-----listar docentes del preuniversitario-----
CREATE FUNCTION listardoc() RETURNS SETOF persona AS
$$
DECLARE
reg RECORD;
BEGIN
FOR REG IN SELECT xp.* FROM docente xe,persona xp
where xe.ci=xp.ci LOOP
RETURN NEXT reg;
END LOOP;
RETURN;
END
$$
LANGUAGE 'plpgsql'
SELECT listardoc();
----------listar las materias a las que esta inscrito el estudiante x-------
SELECT listarmat(100);
REFERENCIAS BIBLIOGRAFICAS
"Diseño de Base de Datos para Sistemas Transaccionales – Modelo Entidad Relación Modelo
Relacional", José Luis Zeballos Abasto, La Paz – Bolivia UMSA 2021
"Operaciones con bases de datos ofimáticas y corporativas", Martín Martinez, Fco. Javier México
Alafaomega-RAMA 2005
"Sistemas de bases de datos diseño, implementación y administración" Rob Peter, Coronel Carlos.
México Thomson 2004
"Fundamentos de bases de datos", Silberschatz Abraham, Korth Henry F. Madrid McGRAWHILL 2002
"Fundamentos de sistemas de bases de datos" Elmasri Ramez, Navathe Shamkant. Madrid PEARSON
& ADDISON WESLEY 2002
"Introducción a las bases de datos relacionales" Mendelson Alberto, Ale Juan PEARSON EDUCATION
2000
"Diseño de bases de datos relacionales" Castaño Adoración de Miguel, Piattini Velthuis Mario
Alfaomega 2000
"Introdución a los sistemas de bases de datos" Ullman Jeffrey D. México PRENTICE HALL 1999
"Fundamentos y modelos de bases de datos" Castaño Adoración de Miguel, Piattini Velthuis Mario.
Alaomega 1999