Często praktykowanym rozwiązaniem jest tworzenie osobnej kolumny zwanej surrogate key, która ma za zadanie zastąpić naturalne klucze główne. Zazwyczaj definiowany przez autoinkrementowalną liczbę (int IDENTITY(1,1)). Nie mają nic wspólnego ze światem rzeczywistym. Wykorzystywane np. gdy:
- nie istnieje naturalny klucz główny
- klucz główny to klucz złożony
W przypadku użycia surrogate key wymagana jest spójność referencyjna.