sql >> Base de Datos >  >> RDS >> Sqlserver

¿Me penalizará SQL Server 2005 por usar un nvarchar(50) como clave principal, en lugar de un número entero?

Se ha topado con una de las principales "guerras santas" del diseño de bases de datos. El debate al que te refieres es el argumento de "sustituto vs. clave natural" que ha estado presente desde que existen los RDBMS (por lo que puedo decir).

El debate esencialmente se reduce a si se debe usar una clave representativa (sustituta, por ejemplo, una columna de IDENTIDAD) versus usar los datos reales que describen de manera única un registro (clave natural).

Diré que no hay una respuesta "correcta". Las medidas de rendimiento son un artefacto de la plataforma y deben evaluarse mediante experimentación, pero es probable que el rendimiento no sea la principal preocupación.

Lo que considero que es el argumento principal para las claves sustitutas es la inmutabilidad de las claves principales. Si elige usar una clave natural, renuncia a la opción de modificar esa clave una vez establecida. También renuncia a la posibilidad de que pueda dejar de ser único en algún momento en el futuro. Por esos motivos, normalmente (no siempre) uso claves sustitutas para la mayoría de mis tablas.

Sin embargo, como mencioné, existe un debate de larga data lleno de discusiones sobre estrategias de indexación y adherencia a la forma normal para leer si así lo desea.

Buscaría en Google "sustituto vs. claves naturales". Aquí hay algunos enlaces para empezar:

Ingeniería de sistemas y RDBMS

Techrepublic

Blog de Tony Rogerson

Espero que esto ayude.