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

[Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Estas en el tema de [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo? en el foro de Mysql en Foros del Web. Mi duda es esa si pueden estar compuestas por un date y un int por ejemplo una FK. Gracias...
  #1 (permalink)  
Antiguo 06/12/2014, 16:42
 
Fecha de Ingreso: noviembre-2014
Mensajes: 50
Antigüedad: 9 años, 5 meses
Puntos: 0
[Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Mi duda es esa si pueden estar compuestas por un date y un int por ejemplo una FK.
Gracias
  #2 (permalink)  
Antiguo 06/12/2014, 21:46
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: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Una FK debe ser igual a la PK a que hace referencia.
Si la PK es como describes, así debe ser la FK.

Para ser específicos, tienes que entender claramente lo que es una FK: Es un campo o conjunto de campos que referencia a la PK de otra tabla, siendo que debe cumplir el principio de igualdad a la clave referida, la forma de constituir la FK dependerá de cómo esté definida la PK en la tabla a la que apunta.
No existen, en ese sentido, muchos limitantes de la PK, a excepción que no se pueden usar campos TXT o BLOB para ello. Fuera de eso, mientras la PK sea única y no nula (reglas básicas), la puedes crear con cualquier tipo de dato o conjunto de ellos.
Lo que si debes tener en cuenta cuando luego creas la FK es que debe:
1) Tener la misma cantidad de campos.
2) Cada campo debe ser exactamente del mismo tipo del que compone la PK.
3) Si es una PK compuesta, la definición de la FK debe respetar el mismo orden de los campos que aparecen en la PK de referencia.


Esto ultimo quiere decir que si tienes una tabla donde la PK al momento de crearla es:

Código MySQL:
Ver original
  1. ...
  2. PRIMARY KEY(a, b, c)
La FK debe definirse en su cláusula correspondiente como:
Código MySQL:
Ver original
  1. ...
  2. FOREIGN KEY (a, b, c) REFERENCES tabla(a, b, c)

Si la pusieras como
Código MySQL:
Ver original
  1. ...
  2. FOREIGN KEY (c, a, b) REFERENCES tabla(a, b, c)
no sería correcto y dispararía un error de ejecución y no se crearía la FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/12/2014 a las 08:42
  #3 (permalink)  
Antiguo 07/12/2014, 12:36
 
Fecha de Ingreso: noviembre-2014
Mensajes: 50
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

gracias,pero mi duda es por ejemplo si puedo tener una FK compuesta por datetime y un varchar.
Recien tenia una FK compuesta por dos int pero uno era auto increment y el otro no y me largaba error,las puse a los sin auto increment y andubo.
Pero se pueden mezclar tipos de datos en la fk?
  #4 (permalink)  
Antiguo 07/12/2014, 13:47
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: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Creo que te estas confundiendo. Eso que describes es una PK, no una FK..
Una PK o PRIMARY KEY es un campo o conjunto de campos de una tabla que identifica unívocamente a un único registro en su tabla.
Las reglas para la creación de una PK son simples:
1) Su valor debe ser único para entre todos los registros.
2) No puede ser NULL.

Extensivamente:
3) No se debe usar en una PK compuesta (más de un campo) un campo que sea AUTO_INCREMENT, porque pueden producirse cierto tipo de duplicidades lógicas, ya que el valor del resto de los campos se podría repetir en los diferentes registros, pero el AI se seguiría incrementando, generando claves únicas.
Es decir: Usar un AUTO_INCREMENT es conveniente si y sólo si no es clave compuesta, ya que la propia condición de autoincremental asegura su unicidad.

Fuera de eso, no hay restricciones de tipos de columna... y eso ya te lo explicité tácitamente en el cuarto párrafo de mi primero post.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/12/2014 a las 15:25
  #5 (permalink)  
Antiguo 07/12/2014, 21:18
 
Fecha de Ingreso: noviembre-2014
Mensajes: 50
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Tengo la tabla
Materia
nombre varchar pk
carrera varchar

tiene
nombre pk
numeroComision pk


Comision
numeroComision int pk
horario


la tabla "tiene" es la relacion de las dos,y la fk estaria compuesta por nombre y numeroComision
eso queria decir
  #6 (permalink)  
Antiguo 07/12/2014, 21:35
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: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Eso se denomina "tabla relacional" y la única característica especial que tiene es que su PK es compuesta, y que cada campo a su vez es FK de otra tabla...
Es parte del modelo entidad-relación. No entiendo tu duda. Lo puedes ver detalladamente explicado en cualquier manual del tema.
¿Por qué te causa dudas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/12/2014, 18:52
 
Fecha de Ingreso: noviembre-2014
Mensajes: 50
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

algún libro que me recomiendes en español de base de datos por favor
  #8 (permalink)  
Antiguo 08/12/2014, 19:58
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: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Dependerá de cuán técnico lo quieras.
Si quieres ir al corazón y fundamento del tema, "Fundamentos de Bases de Datos", de Silberschatz, Korth y Sudarshan. Es casi el texto fundacional, y en muchos ordenes mi preferido.
El resto es amplio, hay mucho.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 08/12/2014, 23:00
 
Fecha de Ingreso: noviembre-2014
Mensajes: 50
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Alguna edicion en especial?
gracias parece bueno.
Lo vi en mercado libre seguramente lo compre es accesible gracias!
  #10 (permalink)  
Antiguo 09/12/2014, 06:03
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: [Ayuda]Las FK deben estar compuestas por primary key del mismo tipo?

Para lo que sean fundamentos, al nivel de base teorica, cualquier edición viene bien. El que yo tengo es de la Cuarta Edición, y es buena.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: 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 02:02.