Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/10/2015, 14:32
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda sobre cómo manejar una tabla de relaciones

Tienes un error de diseño...
Una tabla relacional, la que define una relación N:M no contiene ID autonuméricos. Nunca.
Las dos FK se usan para definir la PK de esa tabla y no requieren ningun otro campo a menos que un mismo para de FK (las mismas en todos los casos), puedan aparecer relacionadas en más de una ocasión, es decir en diferentes registros.
Esa sola excepción requiere de un discriminante, que normalmente es un campo DATETIME o TIMESPAN, porque tales relaciones se suelen dar en diferentes momentos del tiempo, pero no suelen ser válidos al mismo tiempo. Por supuesto que esto último dependerá de qué tablas, qué relación hay entre ellas y en qué contexto.

En cuanto a los ID autonuméricos, la respuesta es NO. No se vuelve a usar JAMÁS.

sobre esto ya una vez postee en las FAQs de MySQL, donde se aplicarían estos dos conceptos:
Cita:
5. No se recomienda renumerar si existen datos históricos de otras transacciones, que hacen referencia a otros registros que tenían el mismo número. De hecho, en una tabla de stock, las ID jamás cambian porque el hecho que un producto ya no exista ni se fabrique no quiere decir que no aparezca en registros más antiguos. Pisar un ID sería lo mismo que ponerle a un recién nacido el número de documento de un muerto.

6. Es irrelevante tener espacios de números que ya no se usan, en tanto la numeración sea secuencial e incremental. Perder tiempo en renumerar sólo hace que una lista quede más bonita, pero eso se puede hacer perfectamente en la interfase, donde se visualiza la tabla de datos, o bien se pueden usar variables de usuario para generar numeraciones temporales sin afectar la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)