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

[SOLUCIONADO] Crear tabla llave primaria = 2 llaves foraneas

Estas en el tema de Crear tabla llave primaria = 2 llaves foraneas en el foro de Mysql en Foros del Web. Hola. Con respecto a este post: http://www.forosdelweb.com/f86/llave...aneas-1066013/ Usando sql cómo se crea una tabla que tiene la llave primaria compuesta por dos llaves foráneas?...
  #1 (permalink)  
Antiguo 10/03/2016, 14:58
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta Crear tabla llave primaria = 2 llaves foraneas

Hola.
Con respecto a este post:http://www.forosdelweb.com/f86/llave...aneas-1066013/

Usando sql cómo se crea una tabla que tiene la llave primaria compuesta por dos llaves foráneas?
__________________
Todos somos iguales. NO! a la violencia de género.
  #2 (permalink)  
Antiguo 10/03/2016, 15:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Crear tabla llave primaria = 2 llaves foraneas

Para que manejador de bases de datos??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 10/03/2016, 15:16
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Respuesta: Crear tabla llave primaria = 2 llaves foraneas

Cita:
Iniciado por Libras Ver Mensaje
Para que manejador de bases de datos??
Ups!! cierto. Estoy usando MySQL.
__________________
Todos somos iguales. NO! a la violencia de género.
  #4 (permalink)  
Antiguo 10/03/2016, 18:06
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: Crear tabla llave primaria = 2 llaves foraneas

Cita:
Iniciado por bandolera Ver Mensaje
Hola.
Con respecto a este post:http://www.forosdelweb.com/f86/llave...aneas-1066013/

Usando sql cómo se crea una tabla que tiene la llave primaria compuesta por dos llaves foráneas?
De la misma forma que se crea cualquier indice. Es simplemente que se indican todas las columnas que componen la PRIMARY KEY...

Es algo de manual: http://dev.mysql.com/doc/refman/5.7/...ate-table.html
Código MySQL:
Ver original
  1. CREATE TABLE userroles(
  2.    user_id INT NOT NULL,
  3.    role_id INT NOT NULL,
  4.    PRIMARY KEY(user_id,role_id),
  5.    FOREIGN KEY(user_id) REFERENCES users(user_id),
  6.    FOREIGN KEY(role_id) REFERENCES roles(role_id)
  7. );
Básicamente, se hace de la misma forma que en cualquier otro DBMS, o en el CREATE o con un ALTER TABLE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/03/2016, 12:07
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Respuesta: Crear tabla llave primaria = 2 llaves foraneas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
De la misma forma que se crea cualquier indice. Es simplemente que se indican todas las columnas que componen la PRIMARY KEY...

Es algo de manual: http://dev.mysql.com/doc/refman/5.7/...ate-table.html
Código MySQL:
Ver original
  1. CREATE TABLE userroles(
  2.    user_id INT NOT NULL,
  3.    role_id INT NOT NULL,
  4.    PRIMARY KEY(user_id,role_id),
  5.    FOREIGN KEY(user_id) REFERENCES users(user_id),
  6.    FOREIGN KEY(role_id) REFERENCES roles(role_id)
  7. );
Básicamente, se hace de la misma forma que en cualquier otro DBMS, o en el CREATE o con un ALTER TABLE.
Y cómo se hace la búsqueda en este tipo de tabla? Porque si une dos tablas diferentes solo buscará el criterio que nos interesa, o es user o es role, para hallar el otro. Cierto?
__________________
Todos somos iguales. NO! a la violencia de género.
  #6 (permalink)  
Antiguo 11/03/2016, 12:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Crear tabla llave primaria = 2 llaves foraneas

La busquedad se realizara por las tablas que enlaces, si quieres que regrese los datos de las 2 tablas usas las 2 tablas, si solo requieres 1 solo usas 1, todo depende de cual sea tu consulta :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 11/03/2016, 12:19
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: Crear tabla llave primaria = 2 llaves foraneas

Cita:
Iniciado por bandolera Ver Mensaje
Y cómo se hace la búsqueda en este tipo de tabla? Porque si une dos tablas diferentes solo buscará el criterio que nos interesa, o es user o es role, para hallar el otro. Cierto?
Como te dice Libras, eso dependerá del JOIN que realices, y el modo en que lo plantees.
MySQL no trabaja telepáticamente, ningún DBMS tiene consultas automágicas. Solo harán lo que tu digas que haga.
Si consultas por una sola, te devolverá datos por esa sola. Si quieres que devuelva solo los que coinciden en ambas tablas, tendrás que hacer un JOIN que haga eso.
Y si quieres que te devuelva solos los de una que no estén en la otra, o que los devuelva todos aunque no estén en ambas, también se puede. Todo dependerá de lo que TU le indiques al DBMS...

La meta de las FK es mantener la integridad referencial de los datos, y eventualmente hacer mejores optimizaciones en las consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/03/2016, 13:39
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Respuesta: Crear tabla llave primaria = 2 llaves foraneas

Utilizando el ejemplo anterior podría utilizar la tabla de esta manera?

Código MySQL:
Ver original
  1. CREATE TABLE userroles(
  2.    id INT NOT NULL,
  3.    user_id INT NOT NULL,
  4.    role_id INT NOT NULL,
  5.    PRIMARY KEY(id),
  6.    FOREIGN KEY(user_id) REFERENCES users(user_id),
  7.    FOREIGN KEY(role_id) REFERENCES roles(role_id)
  8. );
Creo que salvo el uso de un campo adicional no habría mayor diferencia pues la búsqueda se genera en la tabla que yo escoja.
__________________
Todos somos iguales. NO! a la violencia de género.

Última edición por gnzsoloyo; 11/03/2016 a las 14:19

Etiquetas: llave, llaves, primaria, 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 08:25.