A diferencia de que solo puede existir una clave principal en cada tabla, si usas dicha clave difiniendo un campo único, si lo que deseas es forzar la unicidad en otras columnas, puedes hacerlo creando índices unicos para esos campos, ya que podemos crear varios incides unicos en una misma tabla y podras incluir valores NULL, si lo deseas, aunque solo un NULL se permitirá por columna.
Podemos tener mas de una contraint unica en una sola tabla. Cuando creas una constraint de tipo UNIQUE, lo que hace SQL Server para implementarla es crear automáticamente un índice UNIQUE.
Por lo que usar UNIQUE INDEX o CONSTRAINT UNIQUE, es simplemente de preferencia, ya que trabajar con el indice unico te da alguana mas flexibilildad de cara al futuro con ciertos paramentros. Si usas la constraint, queda quizá un poco más clara a nivel de diseño la intención de qué es lo que se pretende, por lo que documenta mejor tu diseño. Pero por otra parte, crear explícitamente el índice tiene la ventaja de que te permite modificar sus opciones, como por ejemplo el PAD_INDEX o añadirle alguna columna adicional con INCLUDE para permitir que cubra una consulta. Podrías incluso usar un índice filtrado (con WHERE), por ejemplo, para excluir los valores NULL del requisito de unicidad. Mientras no uses ninguna de estas opciones, en principio el comportamiento y el rendimiento debería ser idéntico al obtenido mediante la constraint.
Apunte y recopilación por Norman M. Pardell
Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea