Co powoduje BŁĄD: nie ma unikalnego ograniczenia pasującego do podanych kluczy dla tabeli, do której się odwołuje?

Poniższa przykładowa struktura tabeli daje BŁĄD: nie ma unikalnego ograniczenia pasującego do podanych kluczy do tabeli, do której się odwołuje, i patrząc na to przez chwilę, nie mogę zrozumieć, dlaczego ten błąd pojawia się w tej sytuacji.

BEGIN;

CREATE TABLE foo (
    name                VARCHAR(256) PRIMARY KEY
);

CREATE TABLE bar(
    pkey        SERIAL PRIMARY KEY,
    foo_fk      VARCHAR(256) NOT NULL REFERENCES foo(name), 
    name        VARCHAR(256) NOT NULL, 
    UNIQUE (foo_fk,name)
);

CREATE TABLE baz(   
    pkey            SERIAL PRIMARY KEY,
    bar_fk          VARCHAR(256) NOT NULL REFERENCES bar(name),
    name            VARCHAR(256)
);

COMMIT;

Uruchomienie powyższego kodu daje następujący błąd, który nie ma dla mnie sensu, czy ktoś może wyjaśnić, dlaczego ten błąd się pojawia. Używam postgres 9.1

NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "foo_pkey" for table "foo"
NOTICE:  CREATE TABLE will create implicit sequence "bar_pkey_seq" for serial column "bar.pkey"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "bar_pkey" for table "bar"
NOTICE:  CREATE TABLE / UNIQUE will create implicit index "bar_foo_fk_name_key" for table "bar"
NOTICE:  CREATE TABLE will create implicit sequence "baz_pkey_seq" for serial column "baz.pkey"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "baz_pkey" for table "baz"
ERROR:  there is no unique constraint matching given keys for referenced table "bar"


********** Error **********

ERROR: there is no unique constraint matching given keys for referenced table "bar"
SQL state: 42830

questionAnswers(4)

yourAnswerToTheQuestion