Hola!
Como les va?
Les comento mi problema, me encuentro realizando la migración de exámenes finales, al realizar un reporte de materias rendidas note la ausencia de finales que figuraron en la tabla de mig_examenes en su momento.
Realice la verificación por faltantes de datos que generasen que al momento de realizar la corrida de los script generasen que estos no la pudiesen haber migrado pero todos los datos que son tenidos en cuentas se encuentran en sus respectivas tablas (turnos,llamados,mesas_examenes y libros).
Analizando el código del script 04 que realiza la migración de exámenes y folios físicos (“script_04 migracion examenes_folio_fisico.sql”), note que en un determinado momento hace el control de la existencia de actas. De no existir dicha acta realiza su correspondiente alta sobre la tabla “sga_actas_examen”.
Pero me di cuenta que si se realiza un alta de dos materias ya sea distintas o iguales pero que tiene en común el mismo número de acta por más de encontrase en libros distintos, luego que da de alta el primer acta, me da un error, por duplicidad de claves principales cuando realiza el alta de la segunda acta.
Note que la tabla tiene como claves principales a los siguientes campos “unidad_academica+tipo_acta+acta”. Para los dos primeros campos, sus datos son siempre iguales, pero el dato que se guarda en acta puede o no ser iguales en mi caso, aquí por como esta diseñado tiene que si o si distintos.
Mi pregunta esta en como puedo hacer para solucionar el problema que estoy teniendo?..Hay posibilidades de modificar la clave principal que tiene la tabla, para que agregue a los campos que ya componen la clave principal, al campo “libro”, es decir, que la clave principal sea “unidad_academica+tipo_acta+acta+libro”?
Gracias.
Saludos atentamente
No es recomendable modificar la clave primaria de una tabla, en particular menos de esa tabla que es una de las más importantes. Me parece que faltó un poco de análisis de los scripts y del modelo de datos del Guaraní antes de empezar con la migración. El Script asume que NUNCA debería haber 2 actas con el mismo número y todo el modelo del Guaraní se basa en eso.
Si tenés actas con el mismo número en distintos libros (que es lo que pasa en casi todas las UUNN y privadas), el número de acta en el Guaraní debería incluir de alguna manera el código de libro o algo equivalente para romper la duplicidad.
En nuestro caso el numero de acta se conforma como Eyyyy-xxxx donde yyyy es un número de libro (había 1 libro por materia) y xxxx es un número de folio o acta dentro de ese libro. De esa manera nunca hay duplicidad.
En otros casos, los libros son por carreras pero siguen el mismo criterio, las actas incorporan el número o código de libro dentro del acta para evitar duplicaciones.
Espero que esa migración haya sido solo una migración de prueba y tengas manera de volverla a repetir haciendo los cambios necesarios para que sea una migración exitosa, volviendo previamente a la situación anterior antes de esa migración.
Cesar
Me parece que el control lo deberías hacer mucho mas atrás, en el comienzo, antes de comenzar con la migración
En sqlserver podes hacer un control de la tabla mig_examenes haciendo lo siguiente
SELECT unidad_academica,materia,anio_academico,turno_examen,mesa_examen,llamado,acta
FROM mig_examenes
GROUP by unidad_academica,materia,anio_academico,turno_examen,mesa_examen,llamado,nroacta
HAVING count(*) > 1
El resultado de esto debería ser cero registros. Si tenes líneas duplicadas tenes que resolver eso.
Con esto podes comenzar a depurar tu mig_examenes de manera de lograr una migracion exitosa.
Saludos, amigo y exito
Hola!
Buenos días!!!
Como les indique en el problema que tengo, los exámenes finales se los registra actualmente sobre una base de datos de la manera en que se los indique, existe una tabla exámenes y dentro de esta se cargan los libros en una columna en otra columna se ingresan las actas y en una tercera se ingresan los folios, tanto actas como folio pueden repetirse, la única condición que valida el sistema actual es que si son actas iguales que no figuren en un mismo libro.
En fin, veré de plantear este problema a mis superiores así ellos toman una decisión y yo pueda continuar con el proceso de migración.
A los datos los estoy migrando por ahora los estoy realizando sobre un servidor de desarrollo!!!
Muchas gracias por su ayuda.
Saludos atentamente.
Victor, no podras cambiar la clave primaria del registro y como lo indicas el nro de acta no se puede repetir esten estos en el mismo libro o no.
Una solucion posible es agregar en la tabla de actas un dato mas (pero que no forme parte de la pk) donde registres alli el nro real del acta, y en el campo “acta” actual de la tabla tenga un numero secuencial el cual hará que no se dupliquen. Este nro puede generarse automáticamente al cerrar el acta, ya que si obligan a registrar el libro de actas entonces podras generar el siguiente numero de acta disponible de ese libro.
Luego tendras que modificar todas los reportes oficiales (certificados de materias aprobadas, certificado analítico, etc) donde debas mostrar el número real del acta, entonces alli mostraras el dato nuevo y no el actual.
Creo que la solución más sencilla y tratándose de una migración es la que ya propuse, incorporar el libro al número del acta que si no me equivoco es VARCHAR de 10 o de 15.
Así el número de las actas quedaría conformado como libro-numero acta (o folio) y no tendría nunca repeticiones. Cualquier otra alternativa implica modificar tablas o código del sistema con un importante esfuerzo inicial y luego esfuerzo de mantenimiento en cada cambio de versión.
Esto es lo que he implementado en casi todas las instituciones en las que hubo que migrar actas que se registraban el libros físicos y que por tanto si bien no se repetían dentro de un mismo libro, si se repetían en relación a otros libros, ya fuera que los libros eran por materia (caso del IESE-EST), por carrera (caso del IUSAM) o secuenciales (caso del INSPT-UTN).
Ahora si se quieren complicar la vida … cada uno hace lo que quiere.