Recuerda el weather y cities mesas de Capitulo 2. Considere el siguiente problema: desea asegurarse de que nadie pueda insertar filas en el weather tabla que no tienen una entrada coincidente en el cities mesa. A esto se le llama mantener la integridad referencial de tus datos En los sistemas de bases de datos simplistas, esto se implementaría (si es que se implementa) observando primero el cities tabla para verificar si existe un registro coincidente, y luego insertar o rechazar el nuevo weather registros. Este enfoque tiene una serie de problemas y es muy inconveniente, por lo que PostgreSQL puede hacerlo por usted.

La nueva declaración de las tablas quedaría así:

CREATETABLE cities (
        city     varchar(80)primarykey,
        location point);CREATETABLE weather (
        city      varchar(80)references cities(city),
        temp_lo   int,
        temp_hi   int,
        prcp      real,datedate);

Ahora intente insertar un registro no válido:

INSERTINTO weather VALUES('Berkeley',45,53,0.0,'1994-11-28');
ERROR:  insert or update on table "weather" violates foreign key constraint "weather_city_fkey"
DETAIL:  Key (city)=(Berkeley) is not present in table "cities".

El comportamiento de los extranjeros keys se puede ajustar con precisión a su aplicación. No iremos más allá de este simple ejemplo en este tutorial, solo lo referiremos a Capítulo 5 para más información. Hacer un uso correcto del extranjero keys definitivamente mejorará la calidad de sus aplicaciones de base de datos, por lo que le recomendamos encarecidamente que aprenda sobre ellas.

Anterior Arriba próximo
3.2. Puntos de vista Casa 3.4. Actas