03/11/2014, 21:33
|
| | Fecha de Ingreso: noviembre-2014 Ubicación: México
Mensajes: 3
Antigüedad: 10 años Puntos: 0 | |
Debería reducir esta base de datos? Hola a todos. He estado estudiando un poco acerca del diseño de bases de datos, modelo relacional, modelo E-R... y me ha surgido una duda con respecto a un caso que me aparece frecuentemente...
Supongamos que yo tengo un esquema con lo siguiente:
Compra = (fecha_creacion, monto, impuesto, descuento, usuario_operacion)
Venta = (fecha_creacion, monto, impuesto, descuento, usuario_operacion)
Como ven, ambas entidades poseen los mismos atributos pero refieren a cosas completamente diferentes... ahora, por simple observación, quizá podría generar una entidad como la siguiente:
CompraVenta = (fecha_creacion, monto, impuesto, descuento, usuario_operacion, tipo)
donde tipo sería el discriminante para saber si la tupla se refiere a una compra o a una venta... me parece buena idea, ya que si quiero manejar la base de datos desde otra tecnología (Java, ASP, PHP...), reduzco a la mitad el código que necesito para manejar la base de datos (al menos en clases manejadoras). En este ejemplo no parece mucho ahorro, pero suponiendo que cada una de las relaciones Compra y Venta tengan relaciones a otras entidades cuyos campos también son iguales, y que esto se presenta varias veces en la misma base de datos, entonces se va haciendo mas y mas código que quizá podría ahorrarse...
pero... ahora tengo entendido que al unir las dos tablas y poner un atributo discriminante, aumenta considerablemente el tiempo máquina necesario para realizar operaciones sobre la base de datos... simplemente al hacer una consulta de todas las compras, debe de revisarse el valor del atributo tipo, lo cual se puede evitar si mantengo las entidades separadas. Quizá esto tampoco parece mucho, pero en una base de datos en la que se tiene acceso concurrente por parte de muchos usuarios, y con registros que pueden tener el orden de millones creo que es algo que vale la pena discutir...
Como dije antes, tengo este tipo de casos frecuentemente, me gustaría si pudieran compartir su conocimiento o experiencia, estaría más que agradecido... :)
Saludos a todos y gracias!! |