You are on page 1of 6

/* Trabajo adelantado por una persona

*
para solucionar el problema propuesto
*
en el saln de clase.
*
Sirve como base para concentrarse en
*
la elaboracin de la "solucin" para
*
"usuario final"
*/
/* Definicin de Objetos */
create table TIPO_ASIGNATURA (
codi int primary key,
nombre char (20) not null)
go
create table TIPO_INSCRIPCION (
codi int primary key,
nombre char (30) not null)
go
create table TIPO_OPERACION (
codi int primary key,
nombre char (30) not null)
go
create table ESTUDIANTE (
codi int primary key,
nombre char (30) not null,
direccion char (30) not null,
telefono decimal (7) default null null)
go
create table ASIGNATURA (
codi int primary key,
nombre char (30) not null,
horas_semana int not null check (horas_semana between 2 and 24),
tipo int not null references TIPO_ASIGNATURA)
go
create table INSCRIPCION (
estudiante int references ESTUDIANTE,
asignatura int references ASIGNATURA,
nota int default null null check (nota between 0 and 50),
tipo int not null references TIPO_INSCRIPCION,
primary key (estudiante,asignatura))
go
create table BITACORA (
secuencial numeric (10, 0) identity primary key,
usuario char (30) default user not null,
fecha datetime default getdate() not null,
estudiante int default null null references ESTUDIANTE,
asignatura int default null null references ASIGNATURA,
operacion int not null references TIPO_OPERACION,
comentario varchar(30) default "Operacin exitosa")
go
create view MATERIA as select * from ASIGNATURA
go
/* Vista que le muestra al usuario propietario de la cuenta

la informacin que manipul de los registros de inscripciones


*/
create view SOBRE_INSCRIPCION (usuario, fecha, estudiante, asignatura,
operacion, comentario)
as
select l.fullname, b.fecha, e.nombre, a.nombre, t.nombre,
b.comentario
from ASIGNATURA a, BITACORA b, ESTUDIANTE e,
master..syslogins l, TIPO_OPERACION t
where suser_id()
= l.suid and
b.estudiante = e.codi and
b.asignatura = a.codi and
b.operacion = t.codi
go
/* De manera similar crear vistas para INFORMAR a los
usuarios finales (presentacin sin cdigos) sobre:
- Las asignatura que manipul,
- Los estudiante que manipul,
- TODA la informacin por l manipulada,
- Los registros manipulados por un determinado usuario
(total o discriminada),
- Toda la informacin manipulada por TODOS los usuarios,
con base en la informacin almacenada en la tabla BITACORA */
create trigger i_asignatura on ASIGNATURA for insert as
declare @mat int
select @mat = codi from inserted
insert BITACORA (asignatura, operacion)
values (@mat, 1)
go
create trigger d_asignatura on ASIGNATURA for delete as
declare @mat int
select @mat = codi from deleted
insert BITACORA (asignatura, operacion)
values (@mat, 2)
go
create trigger u_asignatura on ASIGNATURA for update as
declare @mat int
select @mat = codi from inserted
insert BITACORA (asignatura, operacion)
values (@mat, 3)
go
create trigger i_estudiante on ESTUDIANTE for insert as
declare @est int
select @est = codi from inserted
insert BITACORA (estudiante, operacion)
values (@est, 4)
go
create trigger d_estudiante on ESTUDIANTE for delete as
declare @est int
select @est = codi from deleted
insert BITACORA (estudiante, operacion)
values (@est, 5)
go

create trigger u_estudiante on ESTUDIANTE for update as


declare @est int
select @est = codi from inserted
insert BITACORA (estudiante, operacion)
values (@est, 6)
go
create trigger i_inscripcion on INSCRIPCION for insert as
declare @est int, @mat int
select @est = estudiante, @mat = asignatura from inserted
insert BITACORA (estudiante, asignatura, operacion)
values (@est, @mat, 7)
go
create trigger d_inscripcion on INSCRIPCION for delete as
declare @est int, @mat int
select @est = estudiante, @mat = asignatura from deleted
insert BITACORA (estudiante, asignatura, operacion)
values (@est, @mat, 8)
go
create trigger u_inscripcion on INSCRIPCION for update as
declare @est int, @mat int
select @est = estudiante, @mat = asignatura from inserted
insert BITACORA (estudiante, asignatura, operacion)
values (@est, @mat, 9)
go
/*

Datos de Prueba:

*/

insert
insert
insert
insert
go

TIPO_INSCRIPCION
TIPO_INSCRIPCION
TIPO_INSCRIPCION
TIPO_INSCRIPCION

insert
insert
insert
insert
go

TIPO_ASIGNATURA
TIPO_ASIGNATURA
TIPO_ASIGNATURA
TIPO_ASIGNATURA

insert
insert
insert
insert
insert
insert
insert
insert
insert
go

TIPO_OPERACION
TIPO_OPERACION
TIPO_OPERACION
TIPO_OPERACION
TIPO_OPERACION
TIPO_OPERACION
TIPO_OPERACION
TIPO_OPERACION
TIPO_OPERACION

insert
insert
insert
insert
insert
go

ASIGNATURA
ASIGNATURA
ASIGNATURA
ASIGNATURA
ASIGNATURA

values
values
values
values

values
values
values
values

values
values
values
values
values
values
values
values
values

values
values
values
values
values

(1,
(2,
(3,
(4,

(1,
(2,
(3,
(4,

(1,
(2,
(3,
(4,
(5,
(6,
(7,
(8,
(9,

(25110,
(25411,
(13333,
(15555,
(25222,

"Normal")
"Validacin por Suficiencia")
"Validacin por Materia Perdida")
"Validacin por Traslado")

"Terica")
"Prctica")
"Terico-Prctica")
"Grado")

"Adicin de Asignatura")
"Retiro de Asignatura")
"Actualizacin de Asignatura")
"Adicin de Estudiante")
"Retiro de Estudiante")
"Actualizacin de Estudiante")
"Adicin de Inscripcin")
"Retiro de Inscripcin")
"Actualizacin de Inscripcin")

"Programacin",4,3)
"Base de Datos",4,3)
"Clculo",6,1)
"Fsica",6,1)
"Sistemas Distribuidos",4,3)

insert
insert
insert
insert
insert
go

ESTUDIANTE
ESTUDIANTE
ESTUDIANTE
ESTUDIANTE
ESTUDIANTE

insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
go

INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION
INSCRIPCION

values
values
values
values
values

(251122,"Juan Lpez","Calle Carrera",3333333)


(252235,"Lya Castro","Carrera Calle",2222222)
(253351,"Pedro Patio","Diagonal Calle",1111111)
(254444,"Pablo Xie","Avenida Carrera",7777777)
(255500,"Jae Garcia","Transversal Calle",8888888)

(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)
(estudiante,asignatura,tipo)

values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values

(251122,25110,1)
(251122,25411,1)
(251122,13333,1)
(251122,15555,1)
(252235,25222,1)
(252235,15555,1)
(252235,13333,1)
(252235,25411,1)
(253351,25110,1)
(253351,13333,1)
(253351,25222,1)
(254444,25411,1)
(254444,13333,1)
(254444,15555,1)
(255500,13333,1)
(255500,15555,1)

/* Seccin para comprobacin


*/
select * from TIPO_INSCRIPCION
select * from TIPO_ASIGNATURA
select * from TIPO_OPERACION
select * from ESTUDIANTE
select * from ASIGNATURA
select * from INSCRIPCION
select * from BITACORA
select * from MATERIA
select * from SOBRE_INSCRIPCION
go
/* Seccin pendiente:
- Asignar permisos y autorizaciones sobre los objetos
para que los desarrolladores elaboren procedimientos
almacenados.
Atencin!: Ningn "usuario final" puebe tener permisos
para manipular directamente los anteriores objetos
de la base de datos
*/
/* Seccin pendiente:
- Elaborar los procedimientos almacenados. Esta tarea
corresponde a los "desarrolladores de las aplicaciones"
para que se puedan realizar las siguientes acciones:
Trabajar sobre los datos de los Estudiantes,
Trabajar sobre los datos de las asignaturas,
Hacer inscripciones,
Retirar una asignatura de la base de datos, siempre
y cuando no existan estudiantes inscritos en ella,
Cancelar un curso, siempre y cuando TODOS los
estudiantes que la haban inscrito queden por lo
menos con dos (2) asignaturas inscritas,
Retirar un estudiante, de tal forma que se le cancelen
las asignaturas que tiene inscritas,

Registrar las notas obtenidas por un estudiante,


Registrar las notas obtenidas por los estudiantes
de una asignatura,
Consultar las notas de un estudiante,
Consultar la inscripcin de un estudiante,
Consultar una lista de clase.
Atencin!!: Se debe tener en cuenta que los "usuarios
finales" pueden trabajar en forma simultnea.
- Asignar permisos y autorizaciones para que los
"usuarios finales" "ejecuten" los procedimientos"
*/

/* Seccin pendiente:
- Alistar datos de prueba,
- Comprobar que los procedimientos almacenados
funcionan adecuadamente,
- Asignar permisos y autorizaciones
*/
/* Seccin pendiente:
- Alistar un prototipo de trabajo de "usuario final",
- Comprobar la calidad de los resultados,
- Comprobar la calidad del trabajo total.
*/

/* Seccin para dejar en limpio la Base de Datos */


drop view SOBRE_INSCRIPCION
drop view MATERIA
drop table BITACORA
drop table INSCRIPCION
drop table ASIGNATURA
drop table ESTUDIANTE
drop table TIPO_OPERACION
drop table TIPO_INSCRIPCION
drop table TIPO_ASIGNATURA
go

/* Para recuperar una mala nota de una entrega (grupo):


- En la tabla BITACORA registrar no slo el resultado de
las operaciones exitosas, sino tambin registrar las
operaciones rechazadas y la causa de su rechazo, por
ejemplo: llave primaria duplicada, incumplimiento de
una regla sencilla, incumplimiento de una regla
compleja, incumplimiento de las reglas de integridad
referencial, etc.
- Elaborar procedimientos para que los "usuarios finales"
saquen provecho de esta nueva informacin
*/
/* Para recuperar una segunda mala nota de una entrega (personal):
Elaborar procedimientos y/o vistas y/o cursores para cubrir
los siguientes requerimientos:
- Control del trabajo realizado por el "usuario final",
- Control del trabajo realizado por un determinado
"usuario final" (consultado por un "jefe"),
- Control del trabajo realizado por fechas,
- Control del trabajo realizado por objetos de bases

de datos,
- Control del trabajo realizado por tipos de operaciones
- Un ejemplo de trabajo de operaciones seguras usando
transacciones
*/

/* Ing. Ismael Castaeda Fuentes


Profesor
*/

You might also like