es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Postgres: ¿clave externa vs clave de referencia?

En PostgreSQL, ¿hay alguna diferencia conceptual y/o de rendimiento entre las restricciones de clave foránea a nivel de columna y a nivel de tabla? ¿Cuál de las siguientes creaciones de tabla es mejor y por qué en PostgreSQL? Si ambas son iguales, ¿por qué no se deprecia una de ellas?

create table game
(
    gdate date,
    htid int,
    vtid int,
    hscore int default 0,
    vscore int default 0,
    primary key (gdate, htid),
    foreign key (htid) references team,
    foreign key (vtid) references team
);

create table game
(
    gdate date,
    htid int references team(tid),
    vtid int references team(tid),
    hscore int default 0,
    vscore int default 0,
    primary key (gdate, htid)
);

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según la documentación oficial de PostgreSQL, no hay diferencia conceptual entre las restricciones de clave externa a nivel de columna y a nivel de tabla. Ambas aseguran que los valores en la(s) columna(s) de referencia coincidan con los valores en la(s) columna(s) de referencia de la tabla objetivo.

    Sin embargo, puede haber una ligera diferencia en el rendimiento dependiendo del caso de uso específico. Las restricciones a nivel de columna se aplican a las columnas individuales en las que están definidas, mientras que las restricciones a nivel de tabla se aplican a la tabla entera. En algunos casos, tener una restricción a nivel de columna puede resultar en consultas más rápidas ya que la restricción solo necesita verificar la(s) columna(s) específica(s) involucrada(s) en la consulta.

    En cuanto a los dos ejemplos de creación de tablas dados, el segundo es mejor ya que sigue la forma recomendada de definir claves externas en PostgreSQL. Al referenciar explícitamente la(s) columna(s) clave de la tabla de referencia, crea un esquema autónomo y más legible. Además, la definición de la clave primaria se incluye en la misma definición de tabla en lugar de tener una línea separada.

    No es necesario obsoleto ninguno de los ejemplos, ya que ambos son válidos y equivalentes en términos funcionales. Sin embargo, seguir las mejores prácticas y la forma recomendada de definir claves externas puede hacer que el esquema sea más organizado y más fácil de mantener a largo plazo.

Comments are closed.