Foreign keys must reference unique columns (or sets of columns). This includes primary keys or columns with a unique constraint.
[kccrosser] However, you CAN create a foreign key on two or more columns, as long as the combination of columns yields a unique value for each row.
For example, if I had a table of vehicle makes and models, I couldn’t create a foreign key just on the vehicle Make column, since there could be many Models for a given Make. I could create a foreign key on Make+Model, as that combination is unique.
The simple requirement is that a foreign key must resolve to a single row in the table (otherwise it isn’t a key).