Version tables
Business attributes that might change are stored in version tables.
The version table references the head table (
foreign key to the head table's surrogate key?)
A valid_from
and a valid_to
column declares the time range in which the data in the record was actually valid.
Foreign keys
Generally (allegedly: always), foreign keys point to primary keys in head tables. Thus, it is independent of the (changing) values in version tables.