primary, surrogate, foreign, natural keys explaine