Bases de Datos - ¿Mala práctica o error de conceptos?

   
Vista:
Imágen de perfil de Victor

¿Mala práctica o error de conceptos?

Publicado por Victor (3 intervenciones) el 27/06/2017 09:00:17
Un saludo a todos los miembros de la web del programador, realmente es enorme el aporte que hacen y de antemano muchas gracias a quienes dediquen parte de su valioso tiempo a responder mi pregunta, la cual consiste en saber si el hecho de escribir las consultas sql dentro del código de la aplicación (en la llamada capa de acceso a datos) es o no una mala práctica. Según lo que tengo entendido, lo correcto debiera ser definir vistas, procedimientos almacenados y triggers en la base de datos y acceder a ellos desde la capa antes mencionada, en ningún caso escribir las consultas en el código. A pesar de esto, he visto que en varios sitios (institutos, universidades e internet) se enseña de la primera forma. He preguntado a algunos amigos profesionales y he tenido respuestas distintas. Desde el punto de vista de los programadores, estos dominan un lenguaje que les permite acceder a la base de datos y ejecutar consultas, lo cual no necesariamente significa que deban hacerlas. Por otro lado los expertos en bases de datos me dicen que son ellos los encargados de analizar, diseñar y administrar qué, cómo, quién y de qué manera se realizan las consultas especificadas en el proyecto.

A mí me gustaría saber primeramente, si existe alguna voz oficial al respecto, no importa si la implementación es más costosa o si requiere mayor tiempo y personal, quiero saber cuál es la forma más adecuada teniendo presentes los fundamentos del bajo acoplamiento, la reutilización, distribución y el modelo en tres capas.

De antemano gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo Daniel A.

¿Mala práctica o error de conceptos?

Publicado por Leonardo Daniel A. (119 intervenciones) el 28/06/2017 17:27:37
Hola, pues es cuestion de gustos... hay quienes "dicen" que lo hacen con Store Procedures para evitar la inyeccion de datos, pero eso tambien se puede evitar, haciendo las sentencias sql a mano, cuestion de preparar antes el query.... otros que porque es mas facil solo enviar parametros e insertar, borrar o actualizar y regresar si tuvo exito o no.. otros que por cuestiones de permisos, puedes decir que usario puede ejecutar que SP, etc. pero pues la realidad es que el manejo de usuarios lo hacemos en una tabla independiente y no directo en la base de datos... porque le añades mas complejidad si manejas los usuarios en la b.d. y ademas tienes que controlar los permisos en la aplicacion de acceso a pantallas o funciones especificas... la otra cosa que tambien se menciona es que como las sentencias SQL estan en el servidor en un Stored Procedure ya estan compiladas y son mas rapidas, ya que si envias una consulta de tu aplicacion, esta debera ser evaluada y verificada que sea valida y entonces sera ejecutada....

Por el lado de hacer las sentencias dentro de la aplicacion, puedes crear sentencias mas dinamicas y enviarlas al servidor, el asunto es que es mas rollo verificar si se ejecuto correctamente.... yo eh usado las 2, segun la aplicacion que necesite.... hice una pequeña aplicacion en C# con SQL Server Express\LOCALDB con Stored Procedures, y me fue muy bien.... en la actualidad tengo un desarrollo en PowerBuilder... y me ahorro mucho de crear sentencias de actualizacion de datos porque tiene un objeto llamado DataWindow que se encarga de formarla segun el caso y con una instruccion se si se actualizo o no..... y tambien en caso eh tenido que usar sentencias SQL Embebidas ( no se crean objetos tipo recordsed ni cosas de esas, se crea la consulta y se le dice en que variables pondra esos datos), o puedo ligar el DataWindow a los Stored Procedures si asi lo quisiera, o podria llamarlos por codigo si asi lo quisiera...

como te digo cuestion de gustos y necesidades de tu aplicacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Victor

¿Mala práctica o error de conceptos?

Publicado por Victor (3 intervenciones) el 28/06/2017 18:58:46
primero que todo muchas gracias por responder tan pronto y de manera tan clara mi pregunta, el hecho de que hayas probado ambas técnicas me da la tranquilidad de que sabes muy bien lo que esta diciendo, Ahora entiendo que es cosa de gustos y no una mala práctica. Esta duda me surgió debido a que las empresas que conozco en mi país (me imagino que en todos debe pasar lo mismo), muchas veces por el apuro de vender más y a menos costo, descuidan muchos aspectos del análisis y diseño. Si a esto le sumamos que no todas cuentan con grandes equipos de trabajo, obtenemos como resultado que no siempre se puedan hacer las cosas de la mejor manera posible, recurriendo a malas prácticas. En estos momentos (y como ha sido durante toda mi vida de programador), estoy en etapa de constante aprendizaje, y si bien, no siempre se pueden hacer las cosas tal como aparecen en el manual (casi nunca en realidad), me interesa por lo menos saber que es lo optimo.

Reitero mis agradecimientos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.

¿Mala práctica o error de conceptos?

Publicado por Leonardo Daniel A. (119 intervenciones) el 29/06/2017 22:10:12
De nada... yo tengo desde el 94 trabajando profesionalmente en el desarrollo, y eh pasado x muchas cosas.. y siempre el exito esta basado en hacer un excelente analisis y el diseño de la base de datos... e identificar que es lo que mas te conviene en la aplicacion y como dices por falta de tiempo a veces un recurre a algunas mañas para sacar el trabajo, en este ultimo desarrollo me hubiera gustado usar Stored Procedures pero el tiempo era muy corto, y como te digo la herramienta que estoy usando (Powerbuilder) me ahorra todo el trabajo de escribir las sentencias de actualizacion... pues no sufro con eso., jeje.... saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad