0% encontró este documento útil (0 votos)
485 vistas26 páginas

Proyecto Inf-272

Este documento presenta el desarrollo de un sistema de gestión para el curso preuniversitario de la Facultad de Ciencias Puras y Naturales de la Universidad Mayor de San Andrés. El sistema incluye el diseño de una base de datos en PostgreSQL para registrar la inscripción de estudiantes, docentes y asignación de materias. Se describen los objetivos, alcances y limitaciones del proyecto, y se incluyen los modelos entidad-relación y relacional, así como detalles sobre la normalización de las tablas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
485 vistas26 páginas

Proyecto Inf-272

Este documento presenta el desarrollo de un sistema de gestión para el curso preuniversitario de la Facultad de Ciencias Puras y Naturales de la Universidad Mayor de San Andrés. El sistema incluye el diseño de una base de datos en PostgreSQL para registrar la inscripción de estudiantes, docentes y asignación de materias. Se describen los objetivos, alcances y limitaciones del proyecto, y se incluyen los modelos entidad-relación y relacional, así como detalles sobre la normalización de las tablas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 26

UNIVERSIDAD MAYOR DE SAN ANDRÉS

FACULTAD DE CIENCIAS PURAS Y


NATURALES
CARRERA DE INFORMÁTICA

SISTEMA DE GESTION
PREUNIVERSITARIO

Nombre: Sergio Mario Huarahuara Villacorta


Materia: Taller de Base de Datos
Docente: PhD. Jose María Tapia Baltazar

2021
INTRODUCCION

El presente proyecto tiene como fin el desarrollo de un sistema de


gestión para el curso PREUNIVERSITARIO creando una base de datos
para el control del mismo, dando a conocer las limitaciones del proyecto
así mismo como se lo realizo y el análisis que se utilizó, mostrando el
diseño físico así mismo sus modelos E-R y Relacional.
PROBLEMÁTICA

El curso preuniversitario de la facultad de ciencias puras y naturales se ha visto con


problemas al determinar la inscripción de los estudiantes al curso ya que la cantidad de
inscritos ha ido en aumento año por año, por lo cual se ha pedido el diseño de una base de
datos que cumpla los siguientes requerimientos, que permita la inscripción a las diferentes
carreras así mismo poder registrarlos en sus diferentes materias, asignarles un determinado
paralelo y turno, así mismo poder registrar a los docentes que ingresan a dictar las materias
y el sueldo que cada uno percibirá.

DEFINICION DEL PROYECTO

El proyecto debe cumplir los requerimientos planteados en su problemática, así mismo se


debe realizar un análisis sobre cómo fue diseñado que factores intervinieron en su creación,
desarrollo de los modelos entidad relación, modelo relacional y la respectiva normalización
a la base de datos, demostrar el diseño lógico implementado por el motor a utilizar.
El motor para el desarrollo de la base de datos a utilizar es POSTGRESQL el cual fue visto
en la materia para el desarrollo del mismo.

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)

ALCANCES DEL PROYECTO


 Plataforma de desarrollo
La plataforma de desarrollo a utilizar para el montaje de la base de datos será
PostgreSQL es un sistema de gestión de bases de datos relacional orientado a objetos
y de código abierto.

 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.

MODELO ENTIDAD RELACION


 ESQUEMA, UTILIZAR SOFTWARE DE DISEÑO

Para la realización del modelo se utilizó el software de diseño draw.io y se lo modelo


con en base a los requerimientos establecidos.
 DICCIONARIO DE DATOS
Un diccionario de datos es un tipo de metadato que enlista de manera organizada los
nombres, definiciones y características de cada uno de los campos o atributos de una
base de datos y/o conjunto de datos.

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.

- Normalización de la tabla PERSONA:


Revisión de la 1FN
PERSONA (CI, nombre, ap_pat, ap_mat, teléfono, fechanac, id_dep, id_sexo)
Observamos que se encuentra en 1FN ya que no contiene grupos repetitivos, y
son atómicos.

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 Forma normal de Boyce-Cood


PERSONA (CI, nombre, ap_pat, ap_mat, teléfono, fechanac, id_dep, id_sexo)
Vemos que cumple los requerimientos de estar en forma normal de boyce-cood
ya que los únicos determinantes son claves candidatas.

- Normalización de la tabla CARRERA:


Revisión de la 1FN
CARRERA (id_carr, nombre, misión, vision, id_fac, nro_resol)
Observamos que se encuentra en 1FN ya que no contiene grupos repetitivos y son
atómicos.

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 Forma normal de Boyce-Cood


CARRERA (id_carr, nombre, misión, vision, id_fac, nro_resol)
Vemos que cumple los requerimientos de estar en forma normal de boyce-cood
ya que los únicos determinantes son claves candidatas.

- Normalización de la tabla MATERIA:


Revisión de la 1FN
MATERIA (id_mat, nombre, carga_hor, sigla,, id_doc)
Observamos que se encuentra en 1FN ya que no contiene grupos repetitivos y son
atómicos.

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

Revisión de la Forma normal de Boyce-Cood


MATERIA (id_mat, nombre, carga_hor, sigla,, id_doc)
Vemos que cumple los requerimientos de estar en forma normal de boyce-cood
ya que los únicos determinantes son claves candidatas.

DISEÑO FISICO
 Implementación de la BD (SGBD)
Inicialmente procederemos a la creación de la base de datos llamada “bdpreuniv”.

CREATE DATABASE bdpreuniv


WITH
OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
CONNECTION LIMIT = -1;
Luego empezamos la creación de las tablas dentro del diccionario de datos
prroporcionado

CREATE TABLE sexo(


id_sexo varchar(1) NOT NULL,
nom_sexo varchar(10),
primary key (id_sexo)
);

CREATE TABLE departamento(


id_dep varchar(5) NOT NULL,
nom_dep varchar(20),
primary key (id_dep)
);

CREATE TABLE PERSONA(


CI INT NOT NULL,
nombre varchar(20),
ap_pat varchar(40),
ap_mat varchar(40),
telefono int,
fechanac date,
id_dep varchar(5),
id_sexo varchar(1),
primary key (CI),
FOREIGN KEY (id_dep) references departamento (id_dep),
foreign key (id_sexo) references sexo (id_sexo)
);

create table FACULTAD(


id_fac int not null,
nombre varchar(40),
primary key (id_fac)
);

create table CARRERA(


id_carr int not null,
nombre varchar(40),
mision varchar(100),
vision varchar(40),
id_fac int,
nro_resol int,
primary key (id_carr),
foreign key (id_fac) references FACULTAD (id_fac)
);

CREATE TABLE ESTUDIANTE(


id_est int not null,
CI INT NOT NULL,
nro_matr int,
id_carr int,
fecha_matr date,
periodo varchar(7),
primary key (id_est),
FOREIGN KEY (CI) REFERENCES PERSONA (CI),
foreign key (id_carr) references CARRERA (id_carr)
);

CREATE TABLE DOCENTE(


id_doc int not null,
CI INT NOT NULL,
grado_acad varchar(20),
sueldo int,
fecha_ing date,
primary key (id_doc),
FOREIGN KEY (CI) REFERENCES PERSONA(CI)
);

CREATE TABLE MATERIA(


id_mat int not null,
nombre varchar(40),
carga_hor int,
sigla varchar(6),
id_doc int not null,
primary key (id_mat),
foreign key (id_doc) references DOCENTE (id_doc)
);

Create table PARALELO(


id_paralelo varchar(1) not null,
id_mat int not null,
turno varchar(10),
horario varchar(50),
primary key (id_paralelo,id_mat),
foreign key (id_mat) references MATERIA (id_mat)
);

create table DICTA(


id_doc int not null,
id_mat int not null,
id_paralelo varchar(1) not null,
primary key (id_doc, id_mat, id_paralelo),
foreign key (id_doc) references DOCENTE(id_doc),
foreign key (id_mat) references MATERIA(id_mat),
foreign key (id_mat,id_paralelo) references PARALELO
(id_mat,id_paralelo)
);

CREATE TABLE MATERIA_CARRERA(


id_carr int not null,
id_mat int not null,
primary key (id_carr,id_mat),
foreign key (id_carr) references CARRERA(id_carr),
foreign key (id_mat) references MATERIA (id_mat)
);

CREATE TABLE PASA (


id_est int not null,
id_mat int not null,
id_paralelo varchar(1) not null,
calif_final int,
primary key (id_est,id_mat,id_paralelo),
foreign key (id_est) references ESTUDIANTE(id_est),
foreign key (id_mat) references MATERIA(id_mat),
foreign key (id_mat,id_paralelo) references PARALELO(id_mat,id_paralelo)
);

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

 BASE DE DATOS NORMALIZADA

Para presentar la base de datos ya revisada su normalización, se extrajo el diagrama


creado mediante POSTGRE SQL de las tablas y las relaciones creadas lo cual nos dio
lo siguiente:

DISEÑO ERD REALIZADO MEDIANTEE POSTGRESQL


Así mismo se realizó una conexión a la BD mediante DBVisualizer por lo cual se logró
extraer el diagrama físico de la BD el cual quedo de la siguiente forma:

Continuamos con la inserción de las tablas predeterminadas:


insert into sexo(id_sexo,nom_sexo) values('M','MASCULINO');
insert into sexo(id_sexo,nom_sexo) values('F','FEMENINO');

INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('CH','CHUQUISACA');


INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('LP','LA PAZ');
INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('CB','COCHABAMBA');
INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('OR','ORURO');
INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('PT','POTOSI');
INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('TJ','TARIJA');
INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('SC','SANTA CRUZ');
INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('BE','BENI');
INSERT INTO DEPARTAMENTO (id_dep,nom_dep) values('PD','PANDO');
Por consiguiente se procederá a la creación de funciones para la inserción de datos y
manejo mas fácil de las base de datos, cabe mencionar que solo será usado para realizar
registros en la base de datos.
-----------creacion de funciones--------------
---FUNCION PARA AGREGAR FACULTADES----
CREATE OR REPLACE FUNCTION reg_fac(_idfac int,_nom varchar) returns int
as
$$
insert into facultad(id_fac,nombre)
values (_idfac,_nom);
SELECT 1;

$$
LANGUAGE SQL;

select reg_fac(1000,'CIENCIAS PURAS Y NATURALES');


select reg_fac(1001,'INGENIERIA');
select reg_fac(1002,'HUMANIDADES');
SELECT * FROM FACULTAD;
---FUNCION PARA AGREGAR CARRERAS-----
CREATE OR REPLACE FUNCTION reg_carrera(_idca int,_nom varchar,_mis varchar, _vis
varchar,_idfa int,_nrorsl int) returns varchar
as
$$
insert into carrera(id_carr,nombre,mision,vision,id_fac,nro_resol)
values (_idca,_nom,_mis, _vis,_idfa,_nrorsl);
SELECT 'registrado';
$$
LANGUAGE SQL;

select reg_carrera(1000,'INFORMATICA','Formar profesionales idóneos','Ser la unidad


académica líder',1000,2718);
select reg_carrera(1001,'QUIMICA','Formar quimicos con vocacion','Consolidar el
liderazgo',1000,2458);
select reg_carrera(1002,'FISICA','Formar lideres cientificos','Consoliddarar grandes
logros',1000,2456);
SELECT * FROM carrera;
---FUNCION PARA AGREGAR ESTUDIANTES-----
CREATE OR REPLACE FUNCTION inscribir_est(_ci INT,_nom VARCHAR,_pat varchar,_mat
varchar,_tele int,_fechanac date,_dep varchar,_sexo varchar,_idest int,_nro int,_idc
int,_fechama date,_per varchar) returns int
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);
insert into estudiante(id_est,ci,nro_matr,id_carr,fecha_matr,periodo)
values (_idest,_ci,_nro,_idc,_fechama,_per);
SELECT 1;
$$
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);

insert into docente(id_doc,ci,grado_acad,sueldo,fecha_ing)


values (_iddoc,_ci,_grado,_suel,_fechaing);
SELECT 'REGISTRADO';
$$
LANGUAGE SQL;

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

select * from persona;


SELECT * FROM DOCENTE;
-----REGISTRO DE MATERIAS-----
CREATE OR REPLACE FUNCTION reg_mat(_idm int,_nombre varchar,_cargahor int,_sigla
varchar,_idenc int) returns varchar
as
$$
insert into MATERIA(id_mat, nombre,carga_hor,sigla,id_doc)
values (_idm,_nombre,_cargahor,_sigla,_idenc);
SELECT 'REGISTRADO';

$$
LANGUAGE SQL;

SELECT reg_mat(1,'introduccion al matematica',36,'MAT-99',200);


SELECT reg_mat(2,'INTRODUCCION A LA COMPUTACION',36,'COM-99',201);
SELECT reg_mat(3,'INTRODUCCION A LA INFORMATICA',36,'INF-99',202);
SELECT reg_mat(4,'INTRODUCCION A LA QUIMICA',36,'QMC-99',203);
SELECT reg_mat(5,'INTRODUCCION A LA FISICA',36,'FIS-99',204);

select * from MATERIA;


----REGISTRAR PARALELOS-----
CREATE OR REPLACE FUNCTION reg_par(_idpar varchar,_idmat int,_turn varchar,_horario
varchar) returns varchar
as
$$
insert into paralelo(id_paralelo,id_mat,turno,horario)
values (_idpar,_idmat,_turn,_horario);
SELECT 'REGISTRADO';
$$
LANGUAGE SQL;
select reg_par('A',1,'MANIANA','LUNES Y JUEVES 8:00');
select reg_par('B',1,'TARDE','LUNES Y JUEVES 14:00');
select reg_par('A',2,'MANIANA','LUNES Y VIERNES 10:00');
select reg_par('A',3,'MANIANA','MARTES Y MIERCOLES 8:00');
select reg_par('A',4,'MANIANA','MARTES Y MIERCOLES 10:00');

SELECT * FROM PARALELO;

--------registrar que docente dicta que materia en que paralelo-----


CREATE OR REPLACE FUNCTION reg_dicta(_iddoc int,_idmat int,_par varchar) returns
varchar
as
$$
insert into dicta(id_doc,id_mat,id_paralelo)
values (_iddoc,_idmat,_par);
SELECT 'REGISTRADO';
$$
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-------

CREATE or replace FUNCTION listarmat(in _idest int) RETURNS SETOF pasa AS


$$
DECLARE
reg RECORD;
BEGIN
FOR REG IN SELECT xp.* FROM estudiante xe,pasa xp
where xe.id_est=_idest and xp.id_est=xe.id_est LOOP
RETURN NEXT reg;
END LOOP;
RETURN;
END
$$
LANGUAGE 'plpgsql'

SELECT listarmat(100);

De esta forma vemos que se ha cumplido con la implementación total de la


base de datos, ya que creamos funciones para el manejo respectivo de la
información y el manejo de listados tan solo con invocar a respectivas
funciones que facilitaran el trabajo a los usuarios finales.
CONCLUSIONES Y RECOMENDACIONES
Se ha podido ver la implementación de nuestra base de datos de manera exitosa por lo cual
podemos decir que se ha cumplido con los requerimientos establecidos en la problemática
así como los requerimientos vistos necesarios para el funcionamiento de la base de datos
al momento de diseñarla, por lo cual vemos que es funcional.
El diseño de la base de datos fue óptimo ya que al comprobar por la Normalización se vio
que las tablas ya se encontraban en su forma normal.
Se decidió emplear funciones para los registros de datos ya que se vio que es una forma
óptima de no escribir demasiado código y se ejecuta más rápidamente en motor de la BD.
Como última recomendación se podría dar a conocer que se tiene todo modularizado para
su posterior uso si se llegara a implementar una interfaz gráfica, con la cual sería fácilmente
manejable e integrable a ese nuevo proyecto.

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

“Diseño de Base de Datos, Problemas Resueltos”, Adoración de Miguel, Paloma Martinez.


Alfaomega 2001

"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

“Sistemas de bases de datos: conceptos fundamentales" Elmasri Ramirez, Navathe Shamkant.


Estados Unidos ADDISON-WESLEY IBEROAMERICANA 1997.

También podría gustarte