Tablas Intermedias

Hola. Tengo una relación M-N, por lo que estoy usando 3 tablas (personas, detalle_ubicacion y personas_ubicacion). Leí que en toba se puede simular una M-N a partir de una 1-N.

Entonces, elijo la tabla “personas” como padre y como hija a la tabla intermedia. Mi idea es que desde la operación de personas, se pueda cargar una nueva dirección (pero no mediante un combo o un ef_popup).

¿Se puede hacer?. Ya trate de varias formas y no me sirvieron.


modelo.png

modelo.png

Edicion Ubicacion.png

Edicion Ubicacion.png

Hola Mariano,

para poder simular una relacion M-N a partir de una 1-N… uno de los dos extremos debe existir de antemano, de lo contrario no lo podes fijar.

En tu caso puntual, para poder realizar la simulacion las ubicaciones deben ser pre-existentes, de lo contrario estarias dando de alta de manera simultanea registros en dos tablas completamente desconectadas, o por decirlo de otra manera… te quedaria una relacion con dos padres para la tabla intermedia, lo cual te generaria un problema al intentar cargar para editar ya que la relacion solo puede contener una tabla padre.

Una opcion es que lo trabajes de manera desconectada, la relacion por un lado y la tabla de ubicaciones por otro… pero tenes que garantizar que la tabla de ubicaciones se persiste primero y que luego de recuperar los identificadores se los asignas al registro correcto en la relacion para que se guarde correctamente.

Por otro lado, si las ubicaciones tal como parece estan asociadas a la persona y se cargan en la edicion de la misma, no seria mas sencillo colocar una FK?. De otra manera, cuando se reutilizaria una ubicacion?. Parece una extension un tanto forzada del modelo, cual seria el caso puntual que te lleva a ponerlo asi?.

Saludos

La tabla detalle_ubicacion es utilizada por personas y por detalle_servicio donde también es necesario cargar una ubicación. Las fk tendrían que estar en detalle_ubicacion, y se complica cuando quiero cargar solo la ubicación de una persona. Probablemente detalle_ubicacion lo trabaje como un popup. Voy a probar si me sale