none
Consulta sobre eficiencia al cargar un registro en una base de datos RRS feed

  • Pregunta

  • Buenas tardes tengo la siguiente consulta...

    Estoy queriendo armar un formulario en C#.Net en el cual hay una serie de items (Unos 20 en total).

    El Usuario final debe de tildar cuales items desea elegir al cargar el formulario y luego hacer clic en guardar.

    Ahora tengo la siguiente duda al hacer la base de datos...

    Planteo dos iterrogantes:

    Interrogante 1:

    Realizar un único registro que carge en valores de tipo "bit" columnas según tilde el Usuario final.

    Ej

    Id   Item1  Item2 Item3 Item4 .... ItemN

    1        1        0       1        1      ....   N

    Interrogante 2:

    Generar una tabla "Items" en el cual estén cargados todos los items y según la seleccion se muestre en un "Detalle" los items seleccionados.

    Ej

    Id items

    1     1

    1     3

    1     4

    Mi consulta es cual de las dos es la más acertada? O sea, cual es más eficiente para generar lo que yo estoy realizando? 

    El esquema del formulario es el siguiente:

    NroOrdenID PatenteID FechaIngreso Items1... itemsN

    O Generar una Tabla OrdenesDetalle con la estructura del interrogante 2 la cual se relacione con la tabla ordenes (Que tendrá unicamente la Patente y la Fecha de ingreso).

    Espero me puedan ayudar!

    Muchas Gracias y Feliz Navidad.

    lunes, 23 de diciembre de 2019 17:22

Respuestas

  • Hola Mariano D:

    Más eficiente la opción 1. Pero es bastante peor.

    Mejor la opción 2. Pasado mañana, el número de items, crece y no tienes que hacer nada. En la opción 1, cambiar todo el formulario, cambiar el diseño de la tabla, etc....

    • Propuesto como respuesta Diana AcuñaModerator lunes, 23 de diciembre de 2019 21:33
    • Marcado como respuesta Mariano D jueves, 26 de diciembre de 2019 13:13
    lunes, 23 de diciembre de 2019 20:34
  • hola

    >>Mi consulta es cual de las dos es la más acertada?

    ve por la opcion 2

    cuando listas items es porque tienes una entidad "cabecera" a la cual relacionas esa seleccion, piensa en algo estilo factura-detalle

    en donde tienes una tabla de facturacion (cabecera) con su id y despues tienes los items (detalle de productos)

    de esta forma armas una relacion "muchos a muchos"

    >>Generar una Tabla OrdenesDetalle con la estructura del interrogante 2 la cual se relacione con la tabla ordenes

    si ve por esa opcion

    >>Realizar un único registro que carge en valores de tipo "bit" columnas según tilde el Usuario final.

    no implementes esta opcion, no es extensible

    los items son fijos y si quieres agregar nuevos vas a tener que agregar un campo mas y el codigo para poder poner ese valor

    es una pesima idea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Mariano D jueves, 26 de diciembre de 2019 13:13
    lunes, 23 de diciembre de 2019 22:57

Todas las respuestas

  • Hola Mariano

    No entendí bien la diferencia entre los 2 interrogantes, pero ...

    Todos los registros o filas de una tabla tienen la misma estructura, o sea las mismas columnas

    Si por cada registro tenes 20 items, creo que deberían estar todos en la tabla, y en cada registro habría algunos en 0 y otros en 1 (si son bit)

    Relacionar con otra tabla se usa, por ejemplo, si queres poner en los registros la marca del coche, en vez de poner en cada fila "Peugeot", "Wolkswagen", "Renault", etc, le pones una FK (MarcaID) que se relaciona con el ID de cada marca en la Tabla Detalles, y así ahorras espacio

    Espero te sea útil

    Saludos y Feliz Navidad

    Pablo

    lunes, 23 de diciembre de 2019 19:35
  • Hola Mariano D:

    Más eficiente la opción 1. Pero es bastante peor.

    Mejor la opción 2. Pasado mañana, el número de items, crece y no tienes que hacer nada. En la opción 1, cambiar todo el formulario, cambiar el diseño de la tabla, etc....

    • Propuesto como respuesta Diana AcuñaModerator lunes, 23 de diciembre de 2019 21:33
    • Marcado como respuesta Mariano D jueves, 26 de diciembre de 2019 13:13
    lunes, 23 de diciembre de 2019 20:34
  • hola

    >>Mi consulta es cual de las dos es la más acertada?

    ve por la opcion 2

    cuando listas items es porque tienes una entidad "cabecera" a la cual relacionas esa seleccion, piensa en algo estilo factura-detalle

    en donde tienes una tabla de facturacion (cabecera) con su id y despues tienes los items (detalle de productos)

    de esta forma armas una relacion "muchos a muchos"

    >>Generar una Tabla OrdenesDetalle con la estructura del interrogante 2 la cual se relacione con la tabla ordenes

    si ve por esa opcion

    >>Realizar un único registro que carge en valores de tipo "bit" columnas según tilde el Usuario final.

    no implementes esta opcion, no es extensible

    los items son fijos y si quieres agregar nuevos vas a tener que agregar un campo mas y el codigo para poder poner ese valor

    es una pesima idea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Mariano D jueves, 26 de diciembre de 2019 13:13
    lunes, 23 de diciembre de 2019 22:57
  • Muchisimas gracias por las respuestas yo también estaba seguro que la solución mas acorde era la 2 pero quería estar seguro!

    Muchas gracias siempre me ayudan con sus consejos!.

    jueves, 26 de diciembre de 2019 13:16