Recall the weather and
cities tables from Chapter 2. Consider the following
problem: You want to make sure that no one can insert rows in the
weather table that do not have a
matching entry in the cities
table. This is called maintaining the referential integrity of your data. In simplistic
database systems this would be implemented (if at all) by first
looking at the cities table to
check if a matching record exists, and then inserting or
rejecting the new weather records.
This approach has a number of problems and is very inconvenient,
so PostgreSQL can do this for
you.

The behavior of foreign keys can be finely tuned to your
application. We will not go beyond this simple example in this
tutorial, but just refer you to Chapter 5
for more information. Making correct use of foreign keys will
definitely improve the quality of your database applications, so
you are strongly encouraged to learn about them.