Jag tror inte att det är bra att använda char eller varchar istället för heltal. Det är svårt att förvänta sig hur mycket långsammare det kommer att vara än heltals-PK, men den här designen kommer att vara långsammare - effekten kommer att bli mer fruktansvärd när du går med i större tabeller. Om du kan, använd ENUM-typer istället.
http://www.postgresql.org/docs/9.2/static /datatype-enum.html
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TABLE person (
name text,
current_mood mood
);
INSERT INTO person VALUES ('Moe', 'happy');
SELECT * FROM person WHERE current_mood = 'happy';
name | current_mood
------+--------------
Moe | happy
(1 row)
PostgreSQL varchar och char typer är väldigt lika. Intern implementering är densamma - char kan vara (det är paradoxalt) lite långsammare på grund av tillägg av mellanslag.