Problemas con generadores en relacion Muchos-a-Muchos
Estoy usando Delphi 7, Firebird 1.5.3 e IBX 7.06
Como muchos sabran, cuando se tiene una relacion muchos a muchos se debe crear una
tablas intermedia que almacena la relacion entre ambas tablas:
Por ej: Un materia puede ser cursada por varios estudiantes y un estudiante puede
cursar varias materias. En este caso se crea una tabla intermedia que
relaciona las 2 tablas. En dicha tabla se debe almacenar la llave primaria
de materia y de estudiante.
Bueno el problema se me presenta cuando se debe almacenar las llaves primarias en
la tabla intermedia. Debido a que uso como llave primaria un numero devuelto por
un generador en las tablas estudiante y materia.
Como se daran cuenta NO ES la tipica relacion maestro-detalle (uno a muchos).
OJO: la llave primaria me la asigna el servidor mediante un generador y un trigger.
En concreto mi problema esta en:
- Como se puede conocer el valor que se asigno a la llave primaria tanto en la
tabla estudiante como en la tabla materia. O sea como obtengo el valor de la
llave primaria una vez echo el Post??
Yo lo obtengo buscando con un Query y dandole como parametro los valores
introducidos. Considero que esta no es la mejor manera, ya que si la tabla
tuviera varios registros (300.000) afectaria al rendimiento de la aplicacion.
Y tambien puede darse el caso que se introduzcan los mismos datos entonces el
query me devolveria mas de 1 registro.
Algunas consideraciones:
- La aplicacion debe funcionar con varios clientes a la vez
- Se debe realizar la insercion de los datos desde el mismo formulario o sea
que la insercion de los datos de alumnos y de las materias que cursa se
hace desde el mismo formulario. Si solamente se tuviera un formulario
en donde se establezcan las relaciones entre materia y alumnos; seria mas facil
porque lo unico que tendria que hacer es usar dblookupcombobox's para "jalar"
los datos ya introducidos; pero esa no es la idea.
Muchas gracias de antemano.
|