none
Generar un campo unico para base de datos desde VB.net RRS feed

  • Pregunta

  • Hola buenas tardes, mas que una pregunta seria un consejo, lo que pasa es que tengo algunas tablas relacionadas en SQL, todas se relacionan a una tabla llamada "numero_parte" en esta tabla tengo que indicar el ID de las otras tablas para al final relacionarlas y generar una consulta entre tablas, el problema es que al momento de llenar la tabla "numero_parte" desde el formulario se solicita que se llene el campo de las llaves foraneas que tengo y muestro los valores desde un combobox (osea todos los ID's que hacen referencia a esa tabla) pero me pidieron que no quieren que se muestre el numero id en el campo donde se lo pide y no puedo mostrar otro valor en lugar del ID porque son valores repetidos para casi todos los registros.

    HABRA ALGUNA FORMA DE AGREGAR UN CAMPO A LA TABLA QUE GENERE VALORES AUTOMATICAMENTE Y SEAN FACILES DE IDENTIFICAR???

    OJALA Y PUEDAN AYUDARME, GRACIAS...


    Cristian Murillo

    lunes, 5 de marzo de 2018 23:39

Respuestas

  • Aquí es donde entra el concepto de "clave de negocio" contra "clave subrogada".

    Se llama clave de negocio a un identificador único que sea fácil de identificar en relación con los datos que identifica, por ejemplo, si es una tabla con datos de coches, la clave de negocio podría ser la matrícula, o si es una tabla de personas la clave de negocio puede ser el DNI, o si es una tabla de empresas, la clave de negocio puede ser el NIF/CIF.

    Alternativamente, se pueden usar "claves subrogadas", que son datos generados automáticamente y que no representan ningún dato del mundo real. Por ejemplo, una clave subrogada puede ser un IDENTITY, o se puede usar un GUID.

    Cuando se usan claves subrogadas, se trata de datos "no reconocibles" por el usuario, y normalmente se mantienen ocultos en la interfaz de usuario. En su lugar, se muestra otro dato o combinación de datos del registro para presentárselos al usuario.

    En un formulario Windows esto lo harías cargando los datos del registro en una clase y poniéndole a la clase un método ToString que concatene en una cadena aquellos campos que haya que mostrarle al usuario, y dentro de la clase también estará el campo autogenerado. Cuando cargas el combo, metes dentro de cada item la clase completa, y el combo ya se encarga de aplicar el ToString para que se vea el texto que ahí generas. Y a la hora de usar el dato, el SelectedItem te entrega el objeto completo y de ahí sacas el ID, que está dentro pero no se muestra en pantalla.

    Si no es aceptable la opción de mostrar alguna combinación de los campos, como hemos dicho arriba, entonces me temo que será necesario modificar el diseño e incorporar al registro una clave de negocio (posiblemente además de la clave autogenerada, no hay inconveniente en conservar ambas).

    martes, 6 de marzo de 2018 7:30