Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Diseño de tabla

Estas en el tema de Diseño de tabla en el foro de Bases de Datos General en Foros del Web. Hola a todos, Estoy creando un sistema para el manejo de transacciones, existen diferentes tipos de transacciones con datos diferentes, por ejemplo en una transacción ...
  #1 (permalink)  
Antiguo 02/01/2014, 20:53
 
Fecha de Ingreso: marzo-2013
Mensajes: 10
Antigüedad: 11 años, 1 mes
Puntos: 0
Diseño de tabla

Hola a todos,

Estoy creando un sistema para el manejo de transacciones, existen diferentes tipos de transacciones con datos diferentes, por ejemplo en una transacción con tarjeta tengo código de autorización, numero de tarjeta, etc. y para una transacción por transferencia bancaria tengo otros datos.

Donde estoy atorado es con el diseño de la tabla, tengo estas dos soluciones:

Solución 1:

Tabla transaccion: Crear campos conforme los vaya necesitando.

Solución 1:

Tablas transaccion: Crear solo los campos generales.
Tabla transaccion_detalle: Tenga 4 campos (id, transaccion_id, campo y valor) entonces cada campos que no sea general iría como un registro.
Yo siempre lo he manejado como la primera solución pero luego las tablas crecen mucho, en cuanto a campos, la solución 2 me parece adecuada para guardar información no tan relevante.

¿Que opinan?

¿Alguien ha implementado algo así?


Saludos.
  #2 (permalink)  
Antiguo 02/01/2014, 21:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Diseño de tabla

Cita:
Solución 1:
Tabla transaccion: Crear campos conforme los vaya necesitando.
Ni en tus peores pesadillas.
Tarde o temprano perderás el control de la estructura, de las relaciones y de la integridad de datos.
Cita:
Solución 1:
Tablas transaccion: Crear solo los campos generales.
Tabla transaccion_detalle: Tenga 4 campos (id, transaccion_id, campo y valor) entonces cada campos que no sea general iría como un registro.
Un poco más cerca de la realidad. pero debes tener en cuenta que la realidad es mutable.
Esto quiere decir que si bien es una mejor solución, solamente el tiempo y la evolución el entorno del negocio definirán los cambios que se necesiten. en otras palabras, es una mejor base, pero no implica que a futuro no puedas necesitas sacar o poner cosas.
DE todos modos tres o cuatro campos pueden ser insuficientes para la definición formal de la transacción. Por las necesidades de consistencia de datos, usar tablas tan reducidas (basadas en taxonomías) implicará ingentes cantidades de validaciones programáticas.
Es más sencillo diseñar tablas de transacciones más normalizadas, e incluso agregar tablas para subconjuntos de datos, y no crear una tabla multiuso.
Conozco una base de datos empresaria donde las transacciones como las que describes usan un esquema de más de veinte tablas, según las necesidades de la operación, y no por eso es poco eficiente ni complejo. Es sumamente poderosa y muy eficiente.
Obviamente por detrás hay varios equipos de desarrollo para la BBDD y para las aplicaciones...

Cita:
¿Alguien ha implementado algo así?
SI: Todas las empresas que operan comercialmente lo han hecho. Pero es muy habitual que la solución sea muy distinta de una a otra.

La regla central del asunto es que no hay un método unificado para solucionarlo, sino que dependen del negocio, y de los requisitos de cada empresa. Y en ese sentido lo que debes analizar es qué requerimientos tiene TU emprendimiento, y ver qué es lo que necesita.

Recuerda: no hay reglas absolutas.
__________________
¿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: campos, performance, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:56.