Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Formato de los id o codigos a nivel de bd

Estas en el tema de Formato de los id o codigos a nivel de bd en el foro de Bases de Datos General en Foros del Web. Estimados, quisiera saber que opinan de los codigos o id en las tablas(ya que estos van a ser primary o foreign key), es seguro incluir ...
  #1 (permalink)  
Antiguo 24/07/2010, 15:40
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Formato de los id o codigos a nivel de bd

Estimados, quisiera saber que opinan de los codigos o id en las tablas(ya que estos van a ser primary o foreign key), es seguro incluir puntos o caracteres en los codigos? por ejemplo: 003.000.1 ó 12.345.678-k. Espero que me puedan ayudar, gracias.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #2 (permalink)  
Antiguo 24/07/2010, 16:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Formato de los id o codigos a nivel de bd

El problema no es si es conveniente o no. El problema es decidir qué es lo que permite identificar unívocamente un registro en una tabla, es decir: atenerse a la definición de lo que es una clave primaria. Cualquier otra cosa es irrelevante y tiene que ver con el diseño del sistema, no con la base.
Lo que sí se puede inferir de lo que propones es que hay una serie de valores que componen la clave primaria, y si estos valores tiene existencia por sí mismos, son esos valores los que deben ir como campos de la tabla y componer al mismo tiempo la clave primaria de la misma.
¿Qué sentido tiene poner los campos ya combinados si con varios campos (y sin puntos, ni comas ni signos) obtienes el mismo resultado, con el agregado que en tu propuesta deberías usar un VARCHAR, mientras en el otro caso alcanzaría con INTs, que combinados usarían menos espacio en disco?
Además, hacer un campo combinado de códigos para obtener una PK artificialmente tendrá como consecuencia que no puedas realizar consultas usando los códigos implicados en esa PK por sí mismos, lo que reduce la eficiencia y efectividad de la tabla a las consultas. Esto porque para lograr esas consultas deberás descomponer (innecesario si los pones como campos independientes) la PK en sus partes básicas, para luego analizarlo.

Resumiendo: Atente al modelo relacional y si necesitas varios valores para identificar un registro en una tabla, simplemente usa PK de campos multiples.
Siempre será más eficiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/07/2010, 17:01
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Respuesta: Formato de los id o codigos a nivel de bd

Gracias por contestar y muy interezante tu respuesta, pero al final independiente del diseño del sistema, de la base de datos y del tipo de dato, que es mejor ingresar un codigo (el codigo lo inventa la empresa y no tiene mayor "importancia") de este tipo 003.000.1 ó 0030001, lo digo por el caracter punto, viendo del punto de vista de las consultas sql.

Lo otro si tengo un columna IDCRISTAL tipo char logitud 9, he ingreso 0030001 (son 7, me faltan 2 para completar los 9 de long), obligadamente tengo que completarlo o no?
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #4 (permalink)  
Antiguo 24/07/2010, 17:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Formato de los id o codigos a nivel de bd

No.
El límte es el que le defines en el campo, pero la base no verificará si ingresas menos, a menos que el DBMS tenga la capacidad (como Oracel) para admitir constraint de tipo CHECK en ella. Caso contrario, eso lo deberás controlar en la aplicación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bd, codigos, formato, nivel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:03.