Closed carajila closed 4 years ago
¿Para que sea una llave foránea dentro de una entidad, necesariamente tiene que ser llave de esa entidad?
Nop. Puede ser o no llave primaria, da lo mismo. No hay restricciones en ello.
Recuerda que PK sirve para evitar filas duplicadas en ésta tabla. FK sirve para evitar referenciar a una fila que no existe en otra tabla.
¿cuando tenemos una herencia, ahí si sería una llave foránea?
Sí, y también primaria. Lo mismo pasa en una tabla intermedia.
Tengo una duda respecto a las FK. Si tengo la entidad ciudad, que tiene un atributo llamado pid(id del pais), tengo una relacion entre la tabla ciudades y la tabla paises, y tengo la entidad país.
¿No es redundante tener el atributo pid en la tabla ciudades? (Ya que tengo una tabla que las relaciona). En la tabla relación, debe haber un primary key? o solo 2 FKs?
Poner un atributo pid
en la tabla Ciudades es una alternativa a crear la tabla intermedia.
En este caso no es necesaria la tabla intermedia puesto que una ciudad pertenece a un único país, por lo que la columna es suficiente.
Por otra parte, en una tabla intermedia deben haber tanto PK como FK. Las FKs serían los ids de ambas entidades que se están relacionando. La PK dependerá de la cardinalidad de la relación (ver otras issues donde se explica esto)
¿Para que sea una llave foránea dentro de una entidad, necesariamente tiene que ser llave de esa entidad? Por ejemplo tenemos las siguientes entidades: A(a: int PRIMARY KEY, b: int) B(c: int PRIMARY KEY, a:int FK) ¿Para este caso, "a" sería una llave foránea en B, por ser llave de A (pero no es llave de B)?
Siguiendo con lo mismo, ¿cuando tenemos una herencia, ahí si sería una llave foránea? Ejemplo, donde B es una entidad herencia de A: A(a: int PRIMARY KEY, b: int) b(a: int FK)