MySQL - Diseño bases de datos

 
Vista:
Imágen de perfil de Deiber

Diseño bases de datos

Publicado por Deiber (4 intervenciones) el 27/03/2017 04:48:37
Saludo para todos. Estoy trabajando en un proyecto y estoy en el diseño de la base de datos, revisando muchos ejemplos de diseños encuentro que la mayoría para tablas de transacciones a parte del identificador del registro manejan un consecutivo. De repente me pregunto que utilidad tiene esto si ya se esta manejando un identificador de registro como llave primaria, agradezco cualquier comentario al respecto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo Daniel A.
Val: 88
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Diseño bases de datos

Publicado por Leonardo Daniel A. (34 intervenciones) el 27/03/2017 05:19:13
Hola depende del gusto... yo por ejemplo lo manejo cuando son por ejemplo Factura y detalle de factura

tengo el id autoincremental que identifica al registro, y un numero de factura que podrias ser numerico o alfanumerico, y el detalle de la factura tambien tiene su id incremental que identifica a cada registro asi como el id de la factura que identifica los registros de una factura, y luego la clave de la factura .Esto lo hago porque en una ocasion se intento cambiar el tipo de numeracion de las facturas y fue un verdadero dolor de cabeza,e asi que ahora lo hago asi, relaciono el encabezado de factura y el detalle con el ID,, evidentemente cuando programas buscas la factura y obtienes el ID del registro factura y lo buscas en el detalle, no las relaciono por no de factura

otro caso es el de la tabla de articulos.... manejo su id autoincremental y aparte su codigo de articulo independente, e igual, en este caso en el detalle de factura tengo el ID del articulo (que no se ve al imprimir o capturar ) y la clave del articulo


como digo depende de gustos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Deiber

Diseño bases de datos

Publicado por Deiber (4 intervenciones) el 27/03/2017 05:42:04
Hola Leonardo!

Buenas noches y gracias por responder mi pregunta, pero me gustaría discutir más el tema la verdad no estoy muy convencido de usar consecutivos a parte de identificadores pero se que debe de haber algo de bueno y de útil en usarlos. En facturas si tengo claro que mi numero de factura se debe de manejar como un campo a parte de la llave primaria puesto que el numero generalmente va determinado por una resolución de la DIAN en el caso de Colombia.

Pero por ejemplo en un movimiento de entrada o salida de inventario no se que tan útil sea usar un consecutivo a parte del Id, y esto me lleva a otra pregunta puesto que si manejo un consecutivo este se lo debo de mostrar al usuario al momento de iniciar una operación es decir que al usuario dar Click por ejemplo en NUEVO en seguida pueda saber con que número se va a guardar ese movimiento para posteriores consultas y esto sería complicado hacerlo en un sistema que funcione en red, porque el caso más común es usar el último registro más 1 y se generaría el siguiente consecutivo, pero para un sistema donde se este trabajando con mas de una conexión al tiempo eso me podría generar duplicidad de identificadores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 88
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Diseño bases de datos

Publicado por Leonardo Daniel A. (34 intervenciones) el 27/03/2017 06:27:06
Asi es, hacer eso de mostrar el sig. numero de movimiento es complicado en red....

a veces lo que se opta es por crear el registro y grabarlo con datos indispensables si es que las columnas no aceptan nulos..., el probelma seria despues si deciden cancelar, ese numero de movimiento lo tendrias que borrar y por lo mismo la numeracion no quedaria consecutiva, no se le puede cumplir todo al usuario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Deiber

Diseño bases de datos

Publicado por Deiber (4 intervenciones) el 27/03/2017 19:15:21
Exactamente ese es el punto, ¿Que pasa si se cancela una operación?. En mi escasa experiencia lo que veo mas conveniente para tratar los consecutivos y no registrar datos innecesarios es no dejar la llave primaria como auto_increment y mas bien crear una tabla para manejar los Id.

Donde tendría por ejemplo dos campos (nombre_tabla, Id_tabla) y de esta forma cada que voy a registrar un movimiento obtengo el dato de la tabla IdTablas por medio de su debida operación y lo muestro al usuario, cosa que si se cancela la operación el registro no me importa si queda consecutivo ya que este seria la llave primaria y mas bien el consecutivo del movimiento si lo puedo manejar a través de alguna operación por ejemplo una función en una transacción haciendo uso de commit y rollback cosa que si se cancela el movimiento no me afecte en nada el consecutivo.

Esto es lo que veo como mas conveniente debido a que la llave primaria de un registro no tienen por que ser un consecutivo mientras que un campo consecutivo en una tabla todos los valores de este campo si que deberían de ser consecutivos y mas si se trata de una factura.

No se que tan acertada sea esa idea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 88
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Diseño bases de datos

Publicado por Leonardo Daniel A. (34 intervenciones) el 27/03/2017 19:26:12
Pues si, ahora que lo mencionas, en alguna ocasion tenia una tabla asi, "consecutivos", y le sumaba uno cada vez que queria hacer un movimiento nuevo


no veo otra solucion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar