Pregunta

Estoy tratando de hacer un juicio al implementar una base de datos SQL Server '08 de pequeño tamaño.

Estoy traduciendo un archivo de texto de salida de una base de datos de archivo plano de un sistema COBOL antiguo a la base de datos de SQL Server mencionada anteriormente. Es una base de datos de préstamos para vehículos y bienes raíces, que puede identificarse de manera única mediante la combinación de una identificación de prestamista (un número de siete dígitos), un número de cuenta bancaria (15 dígitos) y un sufijo de cuenta. (dos dígitos).

Confieso que soy bastante ingenuo cuando se trata de la administración de bases de datos (para ser honesto, realmente no lo he hecho hasta mi posición actual), y estoy tratando de determinar cuál de los dos enfoques es mi mejor opción para implementar una clave que se indexará en varias otras tablas:

1) Identifique cada préstamo utilizando una clave de tres columnas de los valores anteriores, o
2) Desormalizar los datos mediante la implementación de una "clave" columna que es una cadena de 24 caracteres que combina los tres valores.

La desnormalización es fea, concedida, pero no puedo anticipar que ocurran anomalías de actualización, ya que los préstamos no pueden pasarse de un lado a otro de los bancos o cambiar su sufijo de préstamo. Se garantiza que un cambio en esos valores será una cuenta diferente.

Una clave compuesta es más elegante, pero he leído algunos tratados que sugieren que es una mala cosa.

Entonces, ¿qué opción es probable que sea una mejor opción y, lo que es más importante, por qué?

¿Fue útil?

Solución

Usaría una clave sustituta autogenerada y luego pondría un índice único en la clave natural. De esta manera, si la clave natural cambia (y podría decirse que un banco fue comprado por otro banco), entonces solo necesita cambiar en un lugar. Lo más importante en el uso de una clave sustituta es garantizar la unicidad de la clave natural si uno se entusiasma y el índice único lo hará.

Otros consejos

Si se trata de datos de referencia que no se actualizarán con frecuencia, entonces usar la clave de varias partes debería estar bien.

Si se trata de datos transaccionales de alto tráfico, agregue una clave sustituta (identidad int, clave primaria agrupada) y convierta la clave de tres partes en una clave alternativa.

No sugeriría implementar la opción 2 en absoluto.

Sugeriría simplemente usar una clave sustituta numérica de incremento automático. ¿Por qué tendría que ser un mashup de las otras tres '' claves ''? columnas?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top