Claves naturales o artificiales ?, Una cuestion de diseño.

10/01/2005 - 10:50 por Jose Luis | Informe spam
Un saludo a todos

Tengo un programa de produccion y facturacion que estoy pasando de ficheros
isam a mssql, ademas quiero aprovechar el cambio para introducir algunas
mejoras, la mas importante de ellas referente a la gestion de temporadas, me
explico:

La base de datos tiene una serie de tablas ( actualmente mas de 60 ) para
gestionar pedidos, facturas, articulos, control de produccion, etc,. Los
articulos, los pedidos de estos y su produccion y entrega vienen organizados
en temporadas por lo que debo introducir este nuevo dato en la base de datos
y aqui viene el problema.

Hasta ahora mis claves primarias eran las claves naturales de cada tabla,
Atrticulos: CodArticulo, Pedidos: CodPedido, etc.

Con la introduccion de temporadas todo se complica ya que las claves
naturales pasan a ser compuestas, Articulos: CodTemporada+Codarticulo,
Pedidos: CodTemporada+CodPedido, etc, y debo arrastrar estas claves
compuestas a lo largo de toda la aplicacion. por ejemplo en una Lineas de
pedido debo leer un CodArticulo, pero validarlo solo en los articulos de la
Temporada del pedido, etc.

O utilizo claves artificiales incluyendo un campo identity en cada tabla del
tipo NombreTablaID como clave primaria y lo uso en toda la RI de la
aplicacion, aunque esto me obligaria a gestionar dos claves para cada tabla,
una artificial (ID) para enlace con otras tablas y una natural para acceso
de los usuarios a los datos,

Cada solucion tiene sus pros y contras pero una vez me decida por un camino
seria muy dificil volver atras.
Por regla general que metodo es el mas usado.?
Algun consejo o comentario?

Gracias.
 

Leer las respuestas

#1 Carlos Sacristán
10/01/2005 - 11:53 | Informe spam
Echa un vistazo a este artículo
http://www.configuracionesintegrale...iales.asp?
articulo!9


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Jose Luis" escribió en el mensaje
news:#
Un saludo a todos

Tengo un programa de produccion y facturacion que estoy pasando de


ficheros
isam a mssql, ademas quiero aprovechar el cambio para introducir algunas
mejoras, la mas importante de ellas referente a la gestion de temporadas,


me
explico:

La base de datos tiene una serie de tablas ( actualmente mas de 60 ) para
gestionar pedidos, facturas, articulos, control de produccion, etc,. Los
articulos, los pedidos de estos y su produccion y entrega vienen


organizados
en temporadas por lo que debo introducir este nuevo dato en la base de


datos
y aqui viene el problema.

Hasta ahora mis claves primarias eran las claves naturales de cada tabla,
Atrticulos: CodArticulo, Pedidos: CodPedido, etc.

Con la introduccion de temporadas todo se complica ya que las claves
naturales pasan a ser compuestas, Articulos: CodTemporada+Codarticulo,
Pedidos: CodTemporada+CodPedido, etc, y debo arrastrar estas claves
compuestas a lo largo de toda la aplicacion. por ejemplo en una Lineas de
pedido debo leer un CodArticulo, pero validarlo solo en los articulos de


la
Temporada del pedido, etc.

O utilizo claves artificiales incluyendo un campo identity en cada tabla


del
tipo NombreTablaID como clave primaria y lo uso en toda la RI de la
aplicacion, aunque esto me obligaria a gestionar dos claves para cada


tabla,
una artificial (ID) para enlace con otras tablas y una natural para acceso
de los usuarios a los datos,

Cada solucion tiene sus pros y contras pero una vez me decida por un


camino
seria muy dificil volver atras.
Por regla general que metodo es el mas usado.?
Algun consejo o comentario?

Gracias.



Preguntas similares