| ||||
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) |
| ||||
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? |
| ||||
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: |