Stored Procedures are bad?

24/05/2008 - 03:59 por Antonio Ortiz | Informe spam
Un interesante articulo, lo expongo para enriquecer el tema sin afan de
defender tal o cual posicion. Lo ironico es que el autor del articulo es el
mismo que creo la herramienta LLBLGen, que permite generar codigo para SP y
clases .Net para la capa de datos.

Su articulo 'Stored Procedures are bad'
http://weblogs.asp.net/fbouma/archi...38178.aspx

Descarga de LLBLGen
http://www.microsoft.com/downloads/...x?FamilyID›F77697-10B0-42CA-AFE9-B76044B3D2AF&displaylang=en


Investigue un poco el tema a raiz de que un instructor se ofendio cuando le
dije que no estaba de acuedo en la afirmacion 'Los Stored Procedures
ejecutan mas rapido que las consultas dinamicas'. En mi opinion el unico
argumento sostenible para utilizar SP es 'buenas practicas'.


saludos,

Antonio Ortiz
asesor en sistemas
www.aortiz.net
www.progvisual.com

Preguntas similare

Leer las respuestas

#71 Antonio Ortiz
27/05/2008 - 06:38 | Informe spam
Los foros son para discutir y aprender; y lo que menciones es correcto
respecto al ejemplo mencionado por alfredo, ahora que lo veo con
detenimiento veo que si se trata de un proceso de normalizacion, pero no es
similar a la situacion donde tienes una tabla y partes la misma en otra para
colocar una serie de campos que estan relacionados a la misma llave
principal.

Por ejemplo:

Tabla1 { ID1, Nombre, Domicilio, Telefono, FAlta

y lo cambiaras por:
Tabla1 { ID1, Nombre, Domicilio
Tabla2 {IDTabla2, ID1, Telefono, FAlta ó Tabla2 { ID1, Telefono, FAlta

esto si seria una barbaridad, claro que como dice Maxi, en ocasiones se hace
por rendimiento o estrategia como aislar un 'hot block' y eso si es
'desnormalizar'


saludos,

Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com




"Leonardo Azpurua" <l e o n a r d o [arroba] m v p s [punto] o r g> escribió
en el mensaje news:

"Antonio Ortiz" escribió en el mensaje
news:

:|

Si buscas algo sobre modelo relacional te daras cuenta que una regla dice
que 'todas las columnas se relacionan con la columna ppal (Llave
primaria), si ves en tu ejemplo en la segunda tabla, tienes una columna
que depende de una columna en otra tabla, esta demas decir que no es una
forma 'normal'

Mas especificamente te pongo la documentacion:

"
Tercera Forma Normal
La Tercera Forma Normal requiere que todas las columnas en cada tabla
relacional dependen de una sola clave primaria. La definición formal es
la siguiente:

Una tabla relacional está en tercera forma normal si (3NF) está en 2NF y
cada columna no-clave no tenga dependencias transitivas a través de sus
claves primarias. En otras palabras, todos los atributos no-clave son
funcionalmente dependientes solo de su clave-primaria."




Eso es exactamente lo que hace el ejemplo de Alfredo: "donde Y depende de
X y Z depende de Y", es decir, antes de crear la división la tabla no
representaba una relación normalizada, y despues sí.

Lo último que haría en mi vida sería discutir con Alfredo sobre teoría de
BBDD relacionales, y mucho menos comenzar un mensaje diciéndole "si buscas
algo sobre modelo relacional".

Pero en fin, cada quién es libre de buscarse su propio tormentos :-)

Salud!


Respuesta Responder a este mensaje
#72 Eduardo
27/05/2008 - 07:12 | Informe spam
y lo cambiaras por:
Tabla1 { ID1, Nombre, Domicilio
Tabla2 {IDTabla2, ID1, Telefono, FAlta ó Tabla2 { ID1, Telefono, FAlta

esto si seria una barbaridad, claro que como dice Maxi, en ocasiones se
hace por rendimiento o estrategia como aislar un 'hot block' y eso si es
'desnormalizar'




O también se hace si "Telefono y FAlta" son opcionales para la gran mayoría
de registros (como dice Miguel), y no veo por qué es desnormalizar ya que
para los fines hasta podrían verse como dos entidades separadas
(compartiendo la misma Pk, si se quiere) y una relación opcional entre ellas
(1 a (1 o 0)).
Respuesta Responder a este mensaje
#73 Alfredo Novoa
27/05/2008 - 12:09 | Informe spam
Hola Antonio,

El Mon, 26 May 2008 22:38:12 -0600, Antonio Ortiz escribió:

detenimiento veo que si se trata de un proceso de normalizacion, pero no es
similar a la situacion donde tienes una tabla y partes la misma en otra para
colocar una serie de campos que estan relacionados a la misma llave
principal.



No, pero si que es de lo que hablaba el texto que pegaste aquí.

Tabla1 { ID1, Nombre, Domicilio, Telefono, FAlta

y lo cambiaras por:
Tabla1 { ID1, Nombre, Domicilio
Tabla2 {IDTabla2, ID1, Telefono, FAlta ó Tabla2 { ID1, Telefono, FAlta

esto si seria una barbaridad, claro que como dice Maxi, en ocasiones se hace
por rendimiento o estrategia como aislar un 'hot block' y eso si es
'desnormalizar'



Desnormalizar consiste en pasar a una forma normal inferior, y aquí
obviamente no ocurre. Las dos tablas siguen en 5NF.


Saludos
Alfredo
Respuesta Responder a este mensaje
#74 Alfredo Novoa
27/05/2008 - 12:17 | Informe spam
Hola Eduardo,

El Tue, 27 May 2008 01:12:43 -0400, Eduardo escribió:

O también se hace si "Telefono y FAlta" son opcionales para la gran mayoría
de registros (como dice Miguel), y no veo por qué es desnormalizar ya que
para los fines hasta podrían verse como dos entidades separadas
(compartiendo la misma Pk, si se quiere) y una relación opcional entre ellas
(1 a (1 o 0)).



Si son independientemente opcionales, es decir que puede haber datos en
uno, el otro, los dos o ninguno entonces lo lógico sería partir en 3 tablas
en lugar de 2.


Saludos
Alfredo
Respuesta Responder a este mensaje
#75 Antonio Ortiz
27/05/2008 - 15:26 | Informe spam
Al crear una relacion uno a uno estas desnormalizando (o como dices tu,
pasando a una forma normal inferior) ya que no cumples la 3ra forma normal.



Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"Alfredo Novoa" escribió en el mensaje
news:zkz1nbud6olv$

Hola Antonio,

El Mon, 26 May 2008 22:38:12 -0600, Antonio Ortiz escribió:

detenimiento veo que si se trata de un proceso de normalizacion, pero no
es
similar a la situacion donde tienes una tabla y partes la misma en otra
para
colocar una serie de campos que estan relacionados a la misma llave
principal.



No, pero si que es de lo que hablaba el texto que pegaste aquí.

Tabla1 { ID1, Nombre, Domicilio, Telefono, FAlta

y lo cambiaras por:
Tabla1 { ID1, Nombre, Domicilio
Tabla2 {IDTabla2, ID1, Telefono, FAlta ó Tabla2 { ID1, Telefono, FAlta

esto si seria una barbaridad, claro que como dice Maxi, en ocasiones se
hace
por rendimiento o estrategia como aislar un 'hot block' y eso si es
'desnormalizar'



Desnormalizar consiste en pasar a una forma normal inferior, y aquí
obviamente no ocurre. Las dos tablas siguen en 5NF.


Saludos
Alfredo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida