Nie ma nic złego w używaniu CHAR lub VARCHAR jako klucza podstawowego.
Oczywiście w wielu przypadkach zajmie to trochę więcej miejsca niż INT, ale jest wiele przypadków, w których jest to najbardziej logiczny wybór i może nawet zmniejszyć liczbę potrzebnych kolumn, poprawiając wydajność, unikając konieczności posiadania oddzielne pole ID.
Na przykład kody krajów lub skróty stanów mają już ustandaryzowane kody znaków i byłby to dobry powód, aby użyć klucza podstawowego opartego na znakach, zamiast tworzyć arbitralny identyfikator liczby całkowitej dla każdego dodatkowego.