Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/07/2011, 09:35
Bernardao
 
Fecha de Ingreso: febrero-2010
Mensajes: 52
Antigüedad: 14 años, 2 meses
Puntos: 3
De acuerdo Respuesta: Problemas creando relación M:N

Cita:
Iniciado por gnzsoloyo Ver Mensaje

El problema es que el script que pusiste creaba una FK que apuntaba a la tabla CATEGORIAS, pero como no estaba, fallaba a la hora de crear la tabla.
Cuando posteas un script así te conviene poner todas las tablas que estén relacionadas, aunque no sean parte de la solución o del problema, o bien eliminar de lo que posteas todas las FK cuya tabla no estés posteando.
Si, me olvidé de borrarlo correctamente, sorry.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Te voy a dar un camino más fácil.
Como por definición del modelo, toda relación N:N genera una tabla relacional, todas las CASE tools del mercado te crean una tabla física cuando vinculas dos tablas a través de un conector N:N. Esto significa que, en el caso de MySQL Workbench, lo que debes hacer es:
1) Crea la tabla JUGADOR con su PK.
2) Crea la tabla EQUIPO con su PK.
3) Selecciona el conector de relación N:N y haz un click en cada tabla y verás que instantáneamente el Workbech crea una tabla nueva donde las dos PK aparecen componiendo la PK de la nueva tabla.
A partir de allí puedes agregar todos los atributos que se necesiten en esa relación.

Como podrás apreciar, las cosas ya están solucionadas... simplemente debes aprender a aprovecharlas.
Lo acabo de hacer como indicas y realmente es más rápido, pero no me arrepiento de haberlo aprendido a hacer a lo pardillo, pero ahora usaré el método que me recomiendas.


Cita:
Iniciado por gnzsoloyo Ver Mensaje
Tips finales:

1) Cuando uses columnas de tipo TINYINT, SMALLINT, MEDIUMINT, INT o BIGINT, y no vayas a usar valores negativos decláralas UNSIGNED.
Al usarlas sin el UNSIGNED, la mitad del rango de representación queda perdido porque está reservado a los números negativos. Así, por ejemplo, un TINYINT va de -128 a +127, mientras que el UNSIGNED va de 0 a 255.
La idea es que aproveches el rango, y que recuerdes que no existen los ID negativos. De hecho, el auto_increment no genera valores negativos.
2) Trata de no usar "ID" como nombre de identificador de las PK de las tablas. A la larga genera confusiones en las consultas con JOIN.
Lo que es habitual es usar un prefijo con el nombre de la tabla, para poder recordarlo más fácilmente (tiene otras ventajas), tal como jugador_id, torneo_id, etc. Si te fijas, Workbench crea automáticamente la primera columna con el "id" como prefijo más el nombre de la tabla, cuando creas las tablas en el diagrama directamente.
Es una práctica general de los desarrolladores.
Aquí me quedo con la duda, porque según entiendo yo, creo que yo he usado prefijos cuando he declarado los PK, también porque Workbench los incluye.
Sobre los unsigned, lo usaré, pero me dió problemas pq a alguna PK la declaré como unsigned y entonces no me permitía crear la realción N:N, pero quizás haciéndolo con tu método pueda declararlo.
Muchas gracias de nuevo crack!!!!