none
Llave compuesta en dataset RRS feed

  • Pregunta

  • Buenas tardes,

    Estoy desarrollando una aplicación de tipo Windows form, estoy trabajando con una relación entre dos tablas (Maestro-Detalle)

    La llave primaria es compuesta entre id_depto y cod_inventario. el código de inventario debe de ser único, incluso debe ser único independientemente del id_depto y eso lo controlo a nivel de aplicación.

    La cuestión es que me pidieron agregar otro código único también, este será cod_referencia. Al ser este nuevo campo también único debo de agregarlo como llave primaria junto a id_depto y cod_inventario haciendo una llame primaria compuesta o este nuevo código cod_referencia lo agrego como un campo normal y controlo a nivel de aplicación que no se repita?


    Carlos Márquez

    lunes, 9 de diciembre de 2013 19:49

Respuestas

  • >>o este nuevo código cod_referencia lo agrego como un campo normal y controlo a nivel de aplicación que no se repita?

    si usas sql server podrias definirlo como campo normal y definirlo como INDEX que no permita duplicado o sea un INDEX UNIQUE

    imagen1

    imagen2

    Nota: para mas detalle de como crear el index consulta el foro de sql server

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Omar Ortiz martes, 10 de diciembre de 2013 18:58
    lunes, 9 de diciembre de 2013 20:16

Todas las respuestas

  • >>o este nuevo código cod_referencia lo agrego como un campo normal y controlo a nivel de aplicación que no se repita?

    si usas sql server podrias definirlo como campo normal y definirlo como INDEX que no permita duplicado o sea un INDEX UNIQUE

    imagen1

    imagen2

    Nota: para mas detalle de como crear el index consulta el foro de sql server

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Omar Ortiz martes, 10 de diciembre de 2013 18:58
    lunes, 9 de diciembre de 2013 20:16
  • Pero a nivel de diseño de la base de datos, es legal colocarlo como un campo normal y controlar la duplicidad mediante la aplicación? aparte claro de colocarlo como index unique

    Carlos Márquez

    lunes, 9 de diciembre de 2013 20:18
  • es legal colocarlo como un campo normal y controlar la duplicidad mediante la aplicación?

    claro porque no podrias

    es mas yo por usar un ORM casi ni defino claves compuestas porque son para problema

    en muy contados casos armo claves compuestas, siempre uso claves simples y los otros campos son claves foraneas a las otras tablas

    si quieres despues defines un INDEX en la db para limitar, pero se supone que se habra una aplicacion esta deberia validar que no se duplique

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 9 de diciembre de 2013 21:42
  • Hola, Tuttini.

    La razón por la cual que me pidieron incluir ese nuevo campo (cod_referencia) es que un articulo puede cambiar de departamento y por lo tanto cambiar de código de inventario, si se cambiaran los primeros 2 campos id_depto y codigo_inventario y luego en un futuro quisiera saber hacia a donde se movió ese articulo no sabría cual es su nuevo departamento y su nuevo código, entonces ahí entraría el nuevo campo código de referencia, se te ocurre otra forma de detectar a que nuevo departamento cambió el articulo y cuál es su nuevo código de inventario sin necesidad de agregar un campo mas?


    Carlos Márquez

    martes, 10 de diciembre de 2013 18:32
  • Hola

    Espero que la solución que Leandro te ha proporcionado haya resuelto tu consulta, de lo contrario te pido de favor desmarques la respuesta y nos lo hagas saber, esto se hace para tener un mayor control sobre los foros, ya que por lo que puedo ver tu pregunta original fue contestada correctamente por Leandro.

    Saludos


    <EL CONTENIDO SE PROVEE "COMO ES" SIN GARANTÍA DE NINGÚN TIPO, ASÍ SEA EXPRESA O IMPLÍCITA>
     
    Gracias
     
    MSDN/TechNet Soporte Comunidades
     
    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.
    Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    martes, 10 de diciembre de 2013 19:02
  • Le hice otra pregunta relacionada al mismo tema por lo tanto no debió de cerrarse, la segunda pregunta es relacionada al mismo tema

    Carlos Márquez

    martes, 10 de diciembre de 2013 19:21