You are on page 1of 17

Implementacin de Triggers 17

GUIA PARA EL DESARROLLO DE LABORATORIO DE BASE DE DATOS


1. OBJETIVO a. Conformar una Gua de Procesos para ser aplicado en el desarrollo del Proyecto de Base de datos, 2. CONTENIDO La presente gua pretende describir paso a paso las acciones a llevar a cabo para el desarrollo de una propuesta orientada al uso de una base de datos en una empresa. PASO 1: ELABORACION DEL MODELADO DE DATOS EN ERWIN DESCRIPCION DEL CASO CONTROL DE PRSTAMOS Y DEVOLUCIONES DE LIBROS EN UNA BIBLIOTECA La Biblioteca es una institucin creada con la finalidad de proveer de libros, manuales, revistas, CD, entre otros materiales de lectura, a los diversos usuarios Lectores de Chimbote para cuya tarea se ha definido el siguiente procedimiento: Los Lectores son personas naturales identificados con una ficha de inscripcin a travs de su nmero de DNI, nombre completo, direccin, nmero de telfono fijo, nmero de telfono mvil, e-mail y un atributo denominado estado que tendr los siguientes valores: 1. Lector castigado, 2. libro indefinidamente, 3. Lector amonestado hasta nuevo aviso, 4. Lector separado. Algunos libros tienen ms de un ejemplar disponible para el servicio de lectura. Asimismo, se llevar registro de los Autores. Tendremos en cuenta que un Autor puede haber escrito uno o ms libros y un libro puede estar escrito por uno o ms autores. De igual manera se tendr en cuenta la informacin de las Editoriales a las que pertenecen los libros de la biblioteca. Los ejemplares de Libros pueden estar disponible para lectura en sala o a domicilio. Asimismo, los ejemplares tienen registro de su estado actual; el mismo que puede ser: o 1: Buen estado o 2: Manchado o 3: Roto o 4: Perdido Adems; se llevar registro de la disponibilidad del ejemplar del libro; es decir, si dicho ejemplar se encuentra en calidad de prestado, para ello utilizaremos un Luis Boy Chavil

Implementacin de Triggers 17 atributo del Ejemplar que marcar 1 si el ejemplar est prestado marcar 2, si el ejemplar est disponible. Cuando el ejemplar de un libro es entregado en calidad de prstamo, el atributo disponibilidad pasar a prestado; es decir, cambiar de 1 a 2. Cuando el ejemplar es devuelto por el lector, el atributo cambiar nuevamente a disponible; esto es, ser modificado de 2 a 1. La solicitud del Ejemplar de un Libro se lleva a cabo a travs de la Ficha de Prstamo en la cul se consignarn los siguientes datos: fecha de prstamo del Libro, DNI del Lector, Tipo de prstamo (1: Lectura en sala / 2. Lectura a domicilio), fecha a devolver el ejemplar, fecha de devolucin (al ingresar el prstamo del ejemplar, estar en blanco y se cargar en el registro de devolucin), Estado del Libro (Se cargar en el registro de devolucin y ser: 1. Buen estado, 2. Manchado, 3. Roto, 4. Perdido). Cuando un nuevo prstamo se inserte en la tabla de prstamos haremos los siguientes controles: o Verificar el estado del lector para saber si est autorizado. o Verificar el estado del Libro para saber si est disponible o Actualizar el atributo disponibilidad del ejemplar, que pasar de disponible a prestado. Cuando un ejemplar ha sido devuelto, Actualizaremos la tabla de prstamos y llevaremos a cabo los siguientes controles: o Verificar que la fecha a devolver sea menor o igual a la fecha de devolucin del libro. Si no es asi, aplicar una sancin y actualizar el estado del lector teniendo en cuenta que su nuevo valor ser: 3. Lector amonestado hasta nuevo aviso. o Verificar el estado del Libro y compararlo con el estado del ejemplar; si no coinciden; aplicar una sancin, y actualizar el estado del Lector segn sea el caso. o Actualizar el atributo disponibilidad del ejemplar, que pasar de 1. Prestado a su nuevo valor 2. Disponible.

Elaborar el modelado de datos normalizado del caso descrito, teniendo en cuenta que habr una tabla donde se registrar el movimiento de libros, la misma que operar de la siguiente manera: a) Al Insertar un nuevo prstamo de Libro se disparar un Trigger que controle los casos descritos, en consecuencia; se desarrollar un trigger FOR Insert. b) Al Actualizar la devolucin de un Libro prestado, se disparar un Trigger que controle los casos descritos, en consecuencia; se desarrollar un trigger FOR Update. El Modelado propuesto, es el siguiente:

Luis Boy Chavil

Implementacin de Triggers 17

PASO 2: IMPLEMENTACION DE UN TRIGGER EN ERWIN TRIGGER PARA INSERCION EN LA TABLA MOVE_LIBROS (Registro de un nuevo Prstamo de Libro) Crearemos el trigger desde ERwin llamado InsertaPrestamos sobre la tabla MOVE_LIBROS para la operacin de INSERCION; de la siguiente manera: Hagamos click derecho sobre la tabla MOVE_LIBROS y elijamos la opcin trigger; asi:

Luis Boy Chavil

Implementacin de Triggers 17

A continuacin veremos la ventana Triggers, aqu pulsemos el botn New y veremos la ventana: New trigger; entonces escribiremos el nombre del Trigger, asi:

Luis Boy Chavil

Implementacin de Triggers 17

En la siguiente ventana elegiremos la opcin Insert, y quedar asi:

Ahora, pasaremos a la pestaa: Code y borraremos el cdigo hasta dejarlo como se indica a continuacin:

Luis Boy Chavil

Implementacin de Triggers 17

Entonces escribiremos el siguiente cdigo Transact SQL: /* CREATE TRIGGER InsertaPrestamos ON MOVE_LIBROS FOR INSERT AS */ BEGIN SET NOCOUNT ON; DECLARE @estadoLector char(01) DECLARE @disponibilidad char(01) select @estadolector = (select LEC_estado from LECTORES L inner join inserted i on L.LEC_dni = i.LEC_dni) select @disponibilidad = (select EJE_disponibilidad from EJEMPLARES E inner join inserted i on E.EJE_numero = i.EJE_numero) if @disponibilidad = '1' AND @estadolector = '4' begin UPDATE EJEMPLARES SET EJE_disponibilidad = '2' FROM EJEMPLARES E inner join MOVE_LIBROS M on E.EJE_numero = M.EJE_numero Luis Boy Chavil

Implementacin de Triggers 17 UPDATE LECTORES SET LEC_estado='3' from LECTORES L inner join MOVE_LIBROS M on L.LEC_dni = M.LEC_dni end ELSE begin if @disponibilidad = 2 Begin RAISERROR('El Libro esta prestado', 10,1) ROLLBACK TRANSACTION End IF @estadolector = 1 Begin RAISERROR('El Lector tiene libro prestado fuera de fecha', 10,1) ROLLBACK TRANSACTION End IF @estadolector = 2 Begin RAISERROR('El Lector esta castigado', 10,1) ROLLBACK TRANSACTION End IF @estadolector = 3 Begin RAISERROR('El Lector tiene un libro prestado', 10,1) ROLLBACK TRANSACTION End end END GO TRIGGER PARA ACTUALIZAR LA TABLA MOVE_LIBROS (Registro de la Devolucin de Libros) Seguiremos los pasos antes sealados en ERwin hasta ver la siguiente ventana:

Luis Boy Chavil

Implementacin de Triggers 17

Pasaremos a la pestaa Code y completaremos con el siguiente cdigo Transact SQL: /* CREATE TRIGGER devolucionPrestamos ON MOVE_LIBROS FOR UPDATE AS */ BEGIN SET NOCOUNT ON DECLARE @estadolibro char(01) DECLARE @fechaDevuelto datetime DECLARE @fechaDevolver datetime select @estadolibro = (select MOV_estadolibro from inserted) select @fechaDevuelto = (select MOV_estadolibro from inserted) select @fechaDevolver = (select MOV_estadolibro Luis Boy Chavil

Implementacin de Triggers 17 from inserted) IF(@estadolibro = 1) BEGIN UPDATE EJEMPLARES SET EJE_disponibilidad = '1' FROM inserted I inner join EJEMPLARES E on E.LIB_codigo = I.LIB_codigo and E.EJE_numero = I.EJE_numero IF(@fechaDevuelto <= @fechaDevolver) BEGIN UPDATE LECTORES SET LEC_estado='1' -- Habilitado FROM inserted I inner join LECTORES L on I.LEC_dni = L.LEC_dni END ELSE BEGIN UPDATE LECTORES SET LEC_estado='3' -- Inhabilitado FROM inserted I inner join LECTORES L on I.LEC_dni = L.LEC_dni END -- Actualiza el estado de los Ejemplares UPDATE EJEMPLARES SET EJE_estado=@estadoLibro FROM inserted I inner join EJEMPLARES E on E.LIB_codigo = I.LIB_codigo and E.EJE_numero = I.EJE_numero END ELSE --No est permitido devolver libros en mal estado BEGIN rollback transaction raiserror('Libro en mal estado', 10, 1) END END go PASO 3: IMPLEMENTACION DE LA BASE DE DATOS EN SQL SERVER 2005 A continuacin, pasaremos el modelo de datos desarrollado en ERwin a la Base de datos en SQL Server, de la siguiente manera: Ingresemos a ERwin y elijamos las siguientes opciones del Men Principal: Tools Forward Engineers/Schema generation .. Luis Boy Chavil

Implementacin de Triggers 17

Veremos la siguiente ventana:

Apliquemos click en el botn Preview y seleccionemos el cdigo Transact SQL generado, luego copie al portapapeles dicho cdigo, de la siguiente manera:

Luis Boy Chavil

Implementacin de Triggers 17 Ahora, ingresemos a Microsoft SQL Server 2005 donde crearemos una nueva base de datos con el nombre BIBLIOTECA, asi:

Seleccionemos la opcin New Query del men auxiliar y pegaremos el cdigo Transact SQL del portapapeles, entonces la ventana quedar asi:

Luis Boy Chavil

Implementacin de Triggers 17

En este punto podremos pulsar F5 y se ejecutar el cdigo Transact SQL. PASO 4: IMPLEMENTACION DE UNA APLICACIN INTEGRADORA EN VISUAL BASIC NET 2005 Ingresemos a Visual Basic Net 2005 Apliquemos en: Archivo Nuevo Proyecto Nombre del Proyecto: WinProyecto Apliquemos en: Datos Agregar nuevo origen de datos Veremos la siguiente ventana:

Luis Boy Chavil

Implementacin de Triggers 17

Apliquemos en el cono Base de datos y hagamos click en el botn Siguiente > La Conexin de datos se refiere a la base de datos: Biblioteca, creada en SQL Server. A continuacin, clickeamos en Siguiente >; para guardar la cadena de conexin. Veremos la siguiente ventana en la que elegiremos el check Tabla, asi:

Luis Boy Chavil

Implementacin de Triggers 17

Click en el botn Finalizar, entonces veremos la siguiente ventana:

Ahora, pasaremos la informacin de cada tabla de datos a cada formulario de acuerdo a uno de los formatos siguientes, haciendo click en cada tabla; veamos:

Despues de elegir DataGridView, Arrastraremos la tabla Autores al formulario y veremos:

Luis Boy Chavil

Implementacin de Triggers 17

Haremos lo mismo en un nuevo formulario, por cada una de las tablas y listo; ya podremos disponer de los datos en formularios de la aplicacin.

Diseo del Formulario Principal


Agregaremos un nuevo formulario haciendo click derecho sobre WinBiblioteca del explorador de soluciones; asi:

Luis Boy Chavil

Implementacin de Triggers 17

En la siguiente ventana elegiremos Formulario primario MDI, asi:

Luis Boy Chavil

Implementacin de Triggers 17 Se mostrar el siguiente formulario en el que podremos disear el men para acceder a cada formulario donde haremos el ingreso de los datos de cada tabla.

El men quedar asi:

Para enlazar cada opcin del men con cada formulario, haremos doble click sobre la opcin y escribiremos el nombre del formulario y el mtodo show; por ejemplo: Form1.show

Luis Boy Chavil

You might also like