Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] mysql tabla relacion varios a varios

Estas en el tema de mysql tabla relacion varios a varios en el foro de Mysql en Foros del Web. Buenas tardes: Me gustaría que me aclararas sobre la creación y manipulación de dos tablas con relación de varios a varios. Soy novato en php ...
  #1 (permalink)  
Antiguo 31/12/2013, 05:56
 
Fecha de Ingreso: mayo-2013
Mensajes: 75
Antigüedad: 10 años, 11 meses
Puntos: 0
mysql tabla relacion varios a varios

Buenas tardes:

Me gustaría que me aclararas sobre la creación y manipulación de dos tablas con relación de varios a varios.

Soy novato en php y mysql y bueno se que hace falta una tabla de union con los id de cada tabla y con claves primarias, pero al insertar valores en las tablas principales como se actualiza la de union?
  #2 (permalink)  
Antiguo 02/01/2014, 04:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: mysql tabla relacion varios a varios

Una relación varios a varios o una relación n:m se crea con una tabla auxiliar que guarda la relación. Esa tabla como mínimo tendrá dos campos los cuales seran claves foraneas referenciando los identificadores de las dos tabla primcipales...


TbPrincipalA
idA
[....mas campos]

TbPrincipalB
idB
[....mas campos]

TbRelacionAB
idA
idB
[....mas campos]
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 02/01/2014, 04:50
 
Fecha de Ingreso: mayo-2013
Mensajes: 75
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: mysql tabla relacion varios a varios

la tabla de union tiene que tener los id de cada tabla como clave primaria o foranea?
Habia visto como primaria las dos.
Que implica que sea una clave foranea? que cuando inserto en la principal se actualiza en la foranea u otra cosa?
  #4 (permalink)  
Antiguo 02/01/2014, 06:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: mysql tabla relacion varios a varios

Cada una por separado debe ser clave foranea (FK) referenciando a la tabla respectiva.

Las dos juntas pueden ser clave principal (PK) si la relación entre dos registros de las tablas principales debe ser única.... podría darse el caso que eso no fuera así pero eso depende de las reglas de tu negocio.

Cita:
Que implica que sea una clave foranea?
Que solo podrás insertar en la tabla referenciante valores que esten previamente insertados en la tabla referenciada, o nulos.

Cita:
que cuando inserto en la principal se actualiza en la foranea u otra cosa?
No

Manual

Manual
Manual
Manual
Manual
Manual
Manual
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 02/01/2014, 06:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: mysql tabla relacion varios a varios

No. Es un tema algo enredado para los que recién se inician, y por lo que sabemos, que más problemas le traen a quienes no han estudiado el modelo Entidad-Relación. Lo hemos tratado infinidad de veces, por lo que encontrarás muchos posts donde se habla in extenso del asunto.
- Una PK es un campo o conjunto de campos que identifica unívocamente a un único registro de una tabla. Puede o no ser un dato propio de la entidad representada, o una clave adicionada.
- Una FK es un campo o conjunto de campos en una tabla que referencia a la PK de otra tabla (de allí lo de "foránea" o "ajena"). Tiene como condición que un registro no puede tener valores en una FK que no existan en la tabla referida. Es una restricción de integridad referencial.
- Una relación entre dos tablas con cardinalidad N:N (muchos a muchos) exige que se cree una tabla adicional para administrar la relación, donde tendrá un único registro por cada par de FKs combinados de ambas.
- La PK de una tabla relacional (la representación de la cardinalidad N:N) tiene por PK a ambas FK al mismo tiempo, esto es, es una clave primaria compuesta por más de un campo.
- Si en una relación puede existir el caso de dos registros con FK que repitan, implica que hay un dato que actúa de discriminante. Ese dato usualmente es propio de la relación y no pertenece a las otras tablas. En tal caso ese dato (uno, o más) es parte de la PK de esa tabla relacional.
- No existen automatismos referidos a esta relación. Los INSERT deben hacerse en el orden correcto: Primero las tablas base, y con las PK de esas, se hacen los INSERT en la tabla relacional.
- El ON DELETE CASCADE ON UPDATE CASCADE es una clausula que puede agregarse a la FK, y que sólo determina que si en la tabla origen de esa clave, se actualiza la PK del registro, se actualicen todos los registros de la tabla relacional donde aparezca, para mantener la integridad; y si se borra el registro que contiene la clave, se borren en cascada todos los relacionados en la tabla relacional que contengan ese valor.

Todo esto y muchas otras cosas más las puedes encontrar en los manuales y tutoiriales del modelo entidad-relación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 02/01/2014, 06:32
 
Fecha de Ingreso: mayo-2013
Mensajes: 75
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: mysql tabla relacion varios a varios

muchas gracias por las explicaciones

Etiquetas: php, relacion, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:44.