Ver Mensaje Individual
  #9 (permalink)  
Antiguo 03/11/2012, 16:51
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema trigger

Cita:
como sabria que dia fue devuelto
Miralo como una especificación de caso de uso, de este modo:
Cita:
1) El actor una devolución (en la aplicación).
2) El sistema recupera la lista de pendientes de devolución, en un listado que contiene:
- ID de prestamo (no necesita ser visible en pantalla)
- ID de libro
- Nombre de la obra.
- Fecha del prestamo.
- Fecha de retorno esperada.
3) El actor selecciona el libro que está siendo devuelto.
4) El sistema muestra los datos del préstamo de esa obra.
5) El actor indica "Devuelto".
6) El sistema registra en la tabla Préstamo la fecha actual en el campo "fecha_devolucion", realizando el UPDATE en base al ID del préstamo en la tabla.
7) Termina el caso de uso.
Con solo esa columna hay mucha información adicional que puedes obtener:
- Si ha superado o no los días máximos de préstamo (que te sugiero que sean configurables y no fijos).
- Si amerita sanciones (por acumulación de retrasos).
- Si ha ganado preferencias o beneficios por cumplimiento.
- Puedes estimar (por el tipo de libro), la media de cuando lo devolverá.
- Puedes determinar qué tipo de libros lleva más y tarda mas en devolver, definiendo esquema de preferencias del alumno.
Y como esa, muchísima información más...
Cita:
tenia la tabla de devoluciones aparte porque segun yo la devolucion no se haria al mismo tiempo que el prestamo
Eso es totalmente irrelevante. Jamás se puede producir un conflicto, porque para que haya una devolución, debe haber primero un préstamo. Si usas DATETIME en lugar de DATE incluso puedes validar que la devolución no pueda realizarse ni siquiera en una hora anterior a la entrada del préstamo. Y de todos modos, si la relación es 1:1... y siempre habrá una devolución de un único préstamo, es un atributo de la entidad y no una entidad independiente.
Por otro lado, como la planteas puede terminar existiendo más de una devolución para un mismo préstamo:
Código SQL:
Ver original
  1. CREATE TABLE DEVOLUCIONES(
  2. codi_prestam INTEGER NOT NULL,
  3. fec_fin DATE DEFAULT sysdate,
  4. (codI_PRESTAMO)
  5. );
Si ver la tabla, no has puesto una relación de tipo UNIQUE en ella, que sería necesario para que una única devolución se relacione con un único préstamo, y ni siquiera una dependencia funcional, ya que no tienes FK definidas.
A mi entender, esa tabla es superflua si sólo agregas la columna que te sugiero.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/11/2012 a las 17:24