Няма нищо лошо в това да използвате CHAR или VARCHAR като първичен ключ.
Разбира се, в много случаи ще заеме малко повече място от INT, но има много случаи, когато това е най-логичният избор и дори може да намали броя на колоните, от които се нуждаете, подобрявайки ефективността, като избягвате необходимостта да имате отделно поле за идентификация.
Например кодовете на държавите или съкращенията на щатите вече имат стандартизирани кодове на знаци и това би било добра причина да се използва основен ключ, базиран на знаци, вместо да се съставя произволен целочислен идентификатор за всеки в допълнение.