Saya rasa tidak menggunakan char atau varchar sebagai gantinya integer adalah ide yang bagus. Sulit untuk mengharapkan betapa lebih lambatnya daripada integer PK, tetapi desain ini akan lebih lambat - dampaknya akan lebih buruk ketika Anda akan bergabung dengan tabel yang lebih besar. Jika bisa, gunakan tipe ENUM sebagai gantinya.
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)
Jenis varchar dan char PostgreSQL sangat mirip. Implementasi internal sama - char bisa (ini paradoks) sedikit lebih lambat karena penambahan spasi.