La structure de hachage permet d'avoir un accès rapide et en temps constant sur les noms des variables, procédures et fonctions.
La surcharge permet de déclarer plusieurs fois le même identificateur (on parle de surcharge uniquement entre les identificateurs du même espace de noms et de la même portée). Elle n'est possible qu'en respectant certaines règles, et seuls certains langages (C++, ada, java ...) permettent cette propriété.
La surcharge pose un problème d'ambiguïté :
En effet, le processus d'identification renvoie un ensemble de définitions au lieu d'une seule.
La solution à ce problème est d'inclure toutes les déclarations (définitions) dans la table des symboles. Un portée peut donc contenir plusieurs déclarations pour un même identificateur ! La réduction des définitions suit des règles dictées par le langage. Il faut pouvoir analyser le contexte pour se retrouver dans le cas où une seule définition est possible.
Par exemple, certains langages effectuent cette réduction en comparant les listes de paramètres.