Pregunta para Alfredo Novoa

06/03/2007 - 22:30 por Eugenio Serrano | Informe spam
Voy a olvidar por un momento los insultos de los cuales he sigo objeto y
propongo un debate de arquitectura en donde todos podamos aprender. Voy a
plantear un caso simple para que todas las personas que leen esta lista
puedan seguirnos.

Imaginate que tienes 4 tablas en tu base de datos:

Clientes
Productos
Orden
DetalleOrden

Supongo que todo el mundo puede imaginarse la relacion entre dichas tablas.

Alfredo: En que lenguaje o como programarias el proceso de emision de una
nueva orden
de pedido ?


Regards / Saludos,
Eugenio Serrano
Microsoft MVP (ASP/ASP.Net)
Solid Quality Mentors
http://www.eugenioserrano.com.ar
if (me.today == me.yesterday) me.tomorrow = null;

Preguntas similare

Leer las respuestas

#6 Eugenio Serrano
07/03/2007 - 14:42 | Informe spam
Ya has visto el mensaje de Alfredo..
No quiere debatir por le parece "aburrido".

A mi me parece mas que interesante, pero su actitud es:

Descalifico gratuitamente a todo el mundo, pero cuando me preguntan a mi
digo.. Ahh yo no se como se hace, o eso es muy aburrido.
Sinceramente creo que no saben como se hacen de verdad las cosas.

Regards / Saludos,
Eugenio Serrano
Microsoft MVP (ASP/ASP.Net)
Solid Quality Mentors
http://www.eugenioserrano.com.ar
if (me.today == me.yesterday) me.tomorrow = null;



"ANT1" escribió en el mensaje de noticias
news:
La verdad Eugenio que este hilo a mi me interesaria mucho (por cierto
he visto que esta repetido). Pero me temo que conseguir que se siga
sin llegar a las descalificaciones es dificil.

Solo desearte suerte. Seguire el hilo de cerca.

Saludos.

Respuesta Responder a este mensaje
#7 J. Naoj
07/03/2007 - 15:43 | Informe spam
Creo que es acertado el ejercicio de mostrar la practica de unas teorias tan
ardientemente defendidas.
El ejercicio propuesto es simple y no creo que haya peligro de plagio ante
el temor de poner al descubierto soluciones particulares muy trabajadas.
Es muy simple y muy honesto: Contrastar con una practica sencilla dos
enfoques teoricos muy discutidas, y en demasiadas ocasiones con un exceso de
"housismo".
De todas formas la principal virtud del doctor es el aportar soluciones, con
independencia del fervor con que actue en la serie.

Gracias y si el promotor de la iniciativa hace una primera aportacion
inicial, seria de agadecer que la otra parte en litigio tambien hiciera lo
propio.


Joan
Respuesta Responder a este mensaje
#8 Alfredo Novoa
07/03/2007 - 16:29 | Informe spam
On Wed, 7 Mar 2007 15:43:17 +0100, "J. Naoj" wrote:

Creo que es acertado el ejercicio de mostrar la practica de unas teorias tan
ardientemente defendidas.
El ejercicio propuesto es simple y no creo que haya peligro de plagio ante
el temor de poner al descubierto soluciones particulares muy trabajadas.
Es muy simple y muy honesto: Contrastar con una practica sencilla dos
enfoques teoricos muy discutidas, y en demasiadas ocasiones con un exceso de
"housismo".



No veo esa serie, pero puede ser divertido pegarles una paliza.

Podemos usar una base de datos aun más simple. La clasica base de
datos de proveedores y componentes de los libros de texto, que tiene
solo tres variables relacionales.

http://en.wikipedia.org/wiki/Suppli...s_database

Aquí está la definición en Tutorial D:

VAR S RELATION {S# S#, SNAME NAME, STATUS INTEGER, CITY CHAR} KEY{S#};

VAR P RELATION {P# P#, PNAME NAME, COLOR COLOR, WEIGHT WEIGHT, CITY
CHAR} KEY {P#};

VAR SP RELATION {S# S#, P# P#, QTY QTY} KEY {S#,P#}
FOREIGN KEY {S#} REFERENCES S
FOREIGN KEY {P#} REFERENCES P;

Crear una orden sería:

insert SP : relation { tuple { S# S#(1234), P# P#(5678), 20 } };

Esto devuelve un error si el proveedor y el componente no existen, si
hay alguna violación de tipos o si la orden ya existe.

Si además queremos impedir que haya órdenes con cantidades negativas o
cero, crearíamos una restricción:

constraint CantidadesPositivas IsEmpty(SP where QTY<=0);

Para que esto quede totalmente completo y ejecutable solo quedaría
definir los tipos S# y P#.



Saludos
Respuesta Responder a este mensaje
#9 Eugenio Serrano
07/03/2007 - 16:41 | Informe spam
Hola J.Naoj

Yo no estoy en litigio, simplemente como he sido agredido gratuitamente no
hago mas que ignorar esos insultos y proponerle que explique como resolveria
el este problema, para llegar a un debate productivo.

Te cuento como puedo hacer esto con Cooperator Framework:
Obviamente antes que nada tengo que usar la herramienta denominada
Cooperator Modeler para definir mis objetos, eso me genera codigo
automaticamente que luego yopuedo usar.

Para emitir una orden, el código quedaria algo mas o menos asi...
(Obviuamente que deberia cargar la orden desde una interface de usuario,
pero este codigo emite una orden con 2 renglones)

'Primero creo un nuevo objeto Orden.
Dim miOrden as Orden = New Orden()
miOrden.Cliente = New Cliente(22)
miOrden.Fecha = Now

'Luego creo un renglon
Dim miRenglon as OrdenDetalle = New OrdenDetalle()
miRenglon.Articulo = New Articulo("1001")
miRenglon.Cantidad = 2

'Y otro renglon mas
Dim miRenglon2 as OrdenDetalle = New OrdenDetalle()
miRenglon.Articulo = New Articulo("2001")
miRenglon.Cantidad = 3

'Agrego los renglones al objeto Orden
miOrden.Detalles.Add(miRenglon1)
miOrden.Detalles.Add(miRenglon2)

'Y ahora mando a grabar la orden con sus renglones a la base de datos
'Como mi objeto Orden es una entidad de negocio, el mapper me hace los
inserts en las 2 tablas dentro de una misma transaccion

OrdenMapper.Insert( miOrden)

Eso es todo.

Regards / Saludos,
Eugenio Serrano
Microsoft MVP (ASP/ASP.Net)
Solid Quality Mentors
http://www.eugenioserrano.com.ar
if (me.today == me.yesterday) me.tomorrow = null;



"J. Naoj" escribió en el mensaje de noticias
news:Omyz%
Creo que es acertado el ejercicio de mostrar la practica de unas teorias
tan
ardientemente defendidas.
El ejercicio propuesto es simple y no creo que haya peligro de plagio ante
el temor de poner al descubierto soluciones particulares muy trabajadas.
Es muy simple y muy honesto: Contrastar con una practica sencilla dos
enfoques teoricos muy discutidas, y en demasiadas ocasiones con un exceso
de
"housismo".
De todas formas la principal virtud del doctor es el aportar soluciones,
con
independencia del fervor con que actue en la serie.

Gracias y si el promotor de la iniciativa hace una primera aportacion
inicial, seria de agadecer que la otra parte en litigio tambien hiciera lo
propio.


Joan


Respuesta Responder a este mensaje
#10 Eugenio Serrano
07/03/2007 - 16:53 | Informe spam
Nos puedes decir en que lenguaje has escrito el ejemplo ?
Y Como lo ejecutas ? Como le pasas los datos ingresados por el usuario ?

Regards / Saludos,
Eugenio Serrano
Microsoft MVP (ASP/ASP.Net)
Solid Quality Mentors
http://www.eugenioserrano.com.ar
if (me.today == me.yesterday) me.tomorrow = null;



"Alfredo Novoa" escribió en el mensaje de
noticias news:
On Wed, 7 Mar 2007 15:43:17 +0100, "J. Naoj" wrote:

Creo que es acertado el ejercicio de mostrar la practica de unas teorias
tan
ardientemente defendidas.
El ejercicio propuesto es simple y no creo que haya peligro de plagio ante
el temor de poner al descubierto soluciones particulares muy trabajadas.
Es muy simple y muy honesto: Contrastar con una practica sencilla dos
enfoques teoricos muy discutidas, y en demasiadas ocasiones con un exceso
de
"housismo".



No veo esa serie, pero puede ser divertido pegarles una paliza.

Podemos usar una base de datos aun más simple. La clasica base de
datos de proveedores y componentes de los libros de texto, que tiene
solo tres variables relacionales.

http://en.wikipedia.org/wiki/Suppli...s_database

Aquí está la definición en Tutorial D:

VAR S RELATION {S# S#, SNAME NAME, STATUS INTEGER, CITY CHAR} KEY{S#};

VAR P RELATION {P# P#, PNAME NAME, COLOR COLOR, WEIGHT WEIGHT, CITY
CHAR} KEY {P#};

VAR SP RELATION {S# S#, P# P#, QTY QTY} KEY {S#,P#}
FOREIGN KEY {S#} REFERENCES S
FOREIGN KEY {P#} REFERENCES P;

Crear una orden sería:

insert SP : relation { tuple { S# S#(1234), P# P#(5678), 20 } };

Esto devuelve un error si el proveedor y el componente no existen, si
hay alguna violación de tipos o si la orden ya existe.

Si además queremos impedir que haya órdenes con cantidades negativas o
cero, crearíamos una restricción:

constraint CantidadesPositivas IsEmpty(SP where QTY<=0);

Para que esto quede totalmente completo y ejecutable solo quedaría
definir los tipos S# y P#.



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