2011-09-15 4 views
5

Tenemos una tabla que contiene los códigos de moneda válidos. Estamos eligiendo usar un valor numérico como la clave principal en lugar de un código de moneda ISO de 3 carbonos, por ejemplo.¿Debería una tabla de referencia incluir el valor numérico de la columna de identidad PK de 0?

El consenso general ha concluido que esta columna CurrencyId debe contener valores que comiencen con cero. Dado que el dólar estadounidense es la moneda principal para nosotros, reclamó la primera posición con un valor de 0.

Mi idea es que las columnas de identidad no deberían comenzar en cero por el único motivo de que algunos idiomas inicializan los números a cero y como como resultado, el código de moneda puede configurarse involuntariamente en USD cuando en realidad nunca fue asignado.

¿Estoy todo mojado? Preferiría asignar un CurrencyId de 1 a USD.

+2

Lo que sea que decidas, solo asegúrate de documentarlo claramente en alguna parte y obtener el acuerdo de todos los desarrolladores y DBA acerca de la solución que elegiste. Además: si usas '0' como valor" real ", igual siempre puedes elegir, p. '-1' como un valor de marcador de posición para" desconocido "o" indefinido "y establece las columnas que hacen referencia a esta tabla para usar ese valor como valor predeterminado. –

+2

@Chad: estoy de acuerdo contigo. [Esta pregunta tiene un tipo similar de discusión sobre enumeraciones] (http://stackoverflow.com/questions/7257409/should-an-enum-start-with-a-0-or-a-1/7257458#7257458) –

+1

um, "¿Estoy todo mojado?" ?? – AakashM

Respuesta

3

La identificación real no debería importar. Tenerlo comenzar en 0 (o 1 para el caso) es completamente arbitrario, ya que ese número no tiene ningún significado para el usuario, solo lo utiliza el sistema como referencia. Si comienza en 0 o 1 o 4,536,901 no es una decisión crítica de diseño.

Creo que el problema que plantea es 100% válido; empezando en 0 puede causar efectos secundarios, algunos de los cuales pueden terminar como errores que son sutiles y difíciles de rastrear. Evitar esto ahora compensa la objeción de cualquier persona a un deseo abitrary/aethiesthetic de comenzar la numeración en cero.

+1

+1, versión corta: simplemente comienza en 1 no estás haciendo arreglos en C –

Cuestiones relacionadas