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

[SOLUCIONADO] ¿Foreign key debe de ser clave primaria?

Estas en el tema de ¿Foreign key debe de ser clave primaria? en el foro de Mysql en Foros del Web. ¿Es conveniente que la columna que es declarada como foreign key sea ademas clave primaria? La columna cliente_id de la tabla descripcion_cliente, que es la ...
  #1 (permalink)  
Antiguo 26/03/2013, 08:53
 
Fecha de Ingreso: septiembre-2012
Mensajes: 51
Antigüedad: 11 años, 7 meses
Puntos: 0
¿Foreign key debe de ser clave primaria?

¿Es conveniente que la columna que es declarada como foreign key sea ademas clave primaria?
La columna cliente_id de la tabla descripcion_cliente, que es la que se le hace el foreign key a la columna cliente_id de la tabla clientes, es UNIQUE y no tiene AUTO_INCREMENT.
Para hacer consultas SELECT mas rápidas es mejor que sea declarada como primary key la columna descripcion_cliente.cliente_id¿no?
  #2 (permalink)  
Antiguo 26/03/2013, 09:25
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: ¿Foreign key debe de ser clave primaria?

Empecemos por el principio:
Si tienes una tabla clientes, todos los atributos que son propios del cliente van en ella. No tiene ningún sentido partirla en dos para guardar algunos datos en otra tabla, si la relación es 1:1, y los datos son siempre obligatorios.

Sólo se hace una descomposición si se cumple alguna de dos condiciones:
1) Se trata de un conjunto de atributos opcionales que pueden expresarse como una única entidad.
2) Se trata de atributos que pueden ser opcionales o no, pero que pueden tener más de una instancia de valores, y por tanto representan una relación al menos 1:N (o N:N) con otro concepto que se puede describir como entidad.

En cualquiera de los dos casos, la PK de esa tabla debe contener a la FK que apunta a la tabla de Cliente. Siempre.
La única consideración es que si la relación de esa tabla es 1:N, la PK de la tabla secundaria debe ser una clave compuesta (y en este caso la componente no debe ser autoincremental).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/03/2013, 17:14
 
Fecha de Ingreso: septiembre-2012
Mensajes: 51
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: ¿Foreign key debe de ser clave primaria?

Gracias gnzsoloyo, todo me quedó claro y la tabla me ha quedado bastante más limpia y los conceptos más claros.

Etiquetas: foreignkey, key, primary
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 18:54.