Está en la página 1de 5

UNIDAD ACADÉMICA DE INFORMÁTICA, CIENCIAS DE LA

COMPUTACIÓN E INNOVACIÓN TECNOLÓGICA

CARRERA DE INGENIERÍA DEL SOFTWARE

ASIGNATURA
GESTIÓN DE BASES DE DATOS

PRACTICA
DESARROLLO DE PRACTICAS DE EJERCICIOS DE CONSULTAS
BASE DE DATOS ESTANDARIZADA
TRIGGERS

INTEGRANTES:

Nelson Wachapa

NOVIEMBRE - 2022
Datos informativos:

Materia: Gestión de Bases de Datos


Ciclo: Quinto
Tema: Ejercicios de consulta. TRIGGERS
Grupos: Máximo de 4 personas
Fecha de entrega: Acorde a fecha estipulado
Valoración: 15 puntos
Docente: Ing. Leopoldo Pauta A.

Objetivo

Aplicar concepciones de los triggers para ejecución automática de instrucciones

Entregables

Establecer a partir de las bases de datos de SGA los siguientes consultas, aplicando la estructuras de triggers:

1. Considere un campo “Promedio” en la tabla “Materias” que almacene el promedio de las calificaciones en
cada estudiante. Mantener actualizado dicho campo de forma automática.

use SGABasico1

Create Table PromedioMaterias (NombreMat Varchar(50) NULL,


PromedioMat Varchar(50) NULL)
Go
Alter Table materias
ADD mat_promedio TINYINT
Go
Create Procedure pr_Actualizar_Promedio_Docentes
As
Insert into PromedioMaterias
Select materias.mat_nombre AS NombreMateria, AVG (evaluaciones.eva_total) As PromedioMateria
From evaluaciones INNER JOIN materias
On evaluaciones.mat_codigo=materias.mat_codigo
Group By materias.mat_nombre
Go
Create Trigger ActualizarPromedioMaterias On evaluaciones
After Update
As
Truncate Table PromedioMaterias
Exec pr_Actualizar_Promedio_Docentes
Go
Create Procedure ActualizaNotasIndependieneMaterias
@txtCodigoMateria Char(10),
@bytAcumulado TINYINT,
@bytNota TINYINT
As
Update evaluaciones
Set
eva_total= @bytAcumulado+@bytNota,

eva_acumulado=@bytAcumulado,
eva_nota=@bytNota
Where mat_codigo=@txtCodigoMateria
Go
Create Trigger ActualizaPromedioTablaMaterias1
On PromedioMaterias
After Insert
As
Begin
Update materias
Set mat_promedio=I.PromedioMat
From inserted I Where mat_nombre=I.NombreMat
End
Go
EXEC ActualizaNotasIndependieneMaterias @txtCodigoMateria='10',@bytAcumulado=3,@bytNota=3

2. Considere en una tabla nueva de asistencia de alumnos, que indique y tenga actualizado, si es que el
estudiante esta ya menos del 70 % de asistencia.

create table EstudiantesAsistencia


(CodigoEstudiante VARCHAR(50) NULL,
AsistenciaEstudiante VARCHAR(50) NULL,
)
GO
ALTER TABLE evaluaciones
ADD registro_cambios TINYINT
GO
--------asistencia
create table EstudiantesAsistencia1
(CodigoEstudiante VARCHAR(50) NULL,
AsistenciaEstudiante VARCHAR(50) NULL,
)
GO
ALTER TABLE evaluaciones
ADD registro_cambios TINYINT
GO
CREATE PROCEDURE asistencia
AS
INSERT INTO EstudiantesAsistencia1
SELECT do.est_nombre AS NombreEstudiante , eva_asistencia = '7'
FROM Evaluaciones Ev
INNER JOIN estudiantes Do ON Ev.est_codigo = Do.est_codigo
GROUP BY Do.est_nombre;
GO
CREATE TRIGGER ActualizarAsisDoc ON Evaluaciones
AFTER UPDATE
AS
TRUNCATE TABLE EstudiantesAsistencia
EXEC asistencia
GO

3. Considere una nueva tabla que mantenga actualizado cuantas veces un docente se le actualiza el salario.
----crea nueva tabla

create table DocenteSalarios


(CodigoDocente VARCHAR(50) NULL,
SalarioDocente VARCHAR(50) NULL,
)
GO
ALTER TABLE docentes
ADD registro_cambios TINYINT
GO
----actualiza

create trigger before_docentes_update


before update on docentes for each row
begin
insert into registrodecambios(doc_codigo, doc_salario) values (old.doc_codigo, old.doc_salario);
END
select * from docentes

Nota: Presentar las capturas de pantalla de lo solicitado en la consulta.

Desarrollo
1.

También podría gustarte