none
Procedimiento almacenado para sumar campo con parámetros en una misma tabla

    Question

  • tengo esto:Juan Perez pide un préstamo de 10000

    tabla_PRESTAMOS

    campo NOMBRE"Juan Perez"

    campo CANTIDAD_PRESTADA "10000"

    campo DEUDA "10000"

    y quiero agregar que si Juan pide un segundo préstamo de 5000 haga esto:

    tabla_PRESTAMOS

    campo NOMBRE"Juan Perez"

    campo CANTIDAD_PRESTADA "5000"

    campo DEUDA "15000"

    que el segundo préstamo se le sume al primer en un campo deuda

    Nota:estoy utilizando como pantalla c# y BD sql sever 2008



    Wednesday, October 24, 2012 10:14 PM

Answers

  • Estaría violando una de las normas de base de datos que sería la repetición de un dato, a menos claro que no vaya a actualizar todos los registros anteriores.  Pero aún así me suena mal.  Hay una regla que dice:  Una columna debe representar un hecho acerca de la clave primaria.  ¿Cuál es su cla ve primaria?  Yo diría que un autonumérico que identifica el préstamo; o sea, una columna debe representar un hecho acerca del préstamo y un acumulado de deudas de todos los préstamos parece violar esta regla.

    El total adeudado por una persona es un hecho de la persona.  Debería considerar mantener ese total en la tabla de clientes.  Un trigger AFTER INSERT sobre la tabla de préstamos puede mantener la columna de total adeudado en la tabla de clientes al día.


    Jose R. MCP
    Code Samples


    • Edited by webJose Wednesday, October 24, 2012 10:50 PM
    • Marked as answer by Eder CostaOwner Friday, November 09, 2012 1:43 PM
    Wednesday, October 24, 2012 10:49 PM

All replies

  • Estaría violando una de las normas de base de datos que sería la repetición de un dato, a menos claro que no vaya a actualizar todos los registros anteriores.  Pero aún así me suena mal.  Hay una regla que dice:  Una columna debe representar un hecho acerca de la clave primaria.  ¿Cuál es su cla ve primaria?  Yo diría que un autonumérico que identifica el préstamo; o sea, una columna debe representar un hecho acerca del préstamo y un acumulado de deudas de todos los préstamos parece violar esta regla.

    El total adeudado por una persona es un hecho de la persona.  Debería considerar mantener ese total en la tabla de clientes.  Un trigger AFTER INSERT sobre la tabla de préstamos puede mantener la columna de total adeudado en la tabla de clientes al día.


    Jose R. MCP
    Code Samples


    • Edited by webJose Wednesday, October 24, 2012 10:50 PM
    • Marked as answer by Eder CostaOwner Friday, November 09, 2012 1:43 PM
    Wednesday, October 24, 2012 10:49 PM
  • Lo que tienes que hacer es insertar un registro separado por cada deuda y para obtener totales lo unique que haces es

    Select NOMBRE, sum(Cantidad_prestada) as Deuda
    From MiTabla
    GRoup by Nombre
    
    

    En este caso tu table tiene que tener solo dos campos,   Nombre y Cantidad_prestada

    EL ultimo campo deuda como ya dijo anteriormente es redundancia. A veces se usa redundancia para aumentar performance pero tiene otras implicaciones y por eso antes de usarlo hay que saber de antemano los problemas que pueden causar.

    Thursday, October 25, 2012 12:46 AM
  • Hola.

    ¿Tu cuestión es de modelado de datos o sobre cómo mantener un modelo ya existente?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    Sunday, November 04, 2012 8:11 PM
    Moderator