Fai bene a evitare un certo numero di query unite utilizzando ciò che viene chiamato natural chiave invece di una chiave surrogata . Solo tu puoi valutare se il beneficio di questo è significativo nella tua domanda.
Cioè, puoi misurare le query nella tua applicazione che sono le più importanti per essere veloci, perché funzionano con grandi volumi di dati o vengono eseguite molto frequentemente. Se queste query traggono vantaggio dall'eliminazione di un join e non risentono dell'utilizzo di una chiave primaria varchar, fallo.
Non utilizzare nessuna delle due strategie per tutte le tabelle nel database. È probabile che in alcuni casi sia meglio una chiave naturale, ma in altri casi è meglio una chiave surrogata.
Altre persone sottolineano bene che è raro in pratica che una chiave naturale non cambi mai o abbia duplicati, quindi le chiavi surrogate di solito valgono la pena.