Hola,
Cita:
Iniciado por barry17 ... se recomienda hacer esta "mezcla" entre las entidades aparentemente similares?? ...
Desde mi punto de vista, como indiqué al principio,
"en cada caso por aparte hay que averiguar detalladamente su funcionalidad y sus características".
Cambiemos el ejemplo de compras y ventas, tenemos carros y perros, aviones y carros, trenes y carros. ¿Son cosas parecidas? Realmente no, los carros no tienen nada en común con los perros; ahora los carros, aviones y trenes tienes cualidades parecidas, pero depende del detalle que yo quiero obtener.
Es decir, los carros, aviones y trenes pueden heredar de medio de transporte. Pero si en general cumplen con las características de un medio de transporte y no necesito mayor información, es mucho mas simple usar una entidad genérica, donde tenga los datos de la velocidad, precio, etc., y el tipo de medio de transporte.
Ahora, si se necesita mayor información sobre cada uno, o las cualidades tienden a ser demasiado diferentes, pues es lógico que necesite una entidad por aparte, para cada uno. Como el caso de los carros y perros, los perros tienen alimento, que es diferente al combustible, es decir, no vas a usar un campo en común llamado consume para diferencia entre alimento y combustible.
El problema aquí no es de estructura de base de datos, el problema es de conceptos, por ejemplo, aplicando el concepto que mencioné antes a las compras y ventas: en tu ejemplo no llevas número de documento, código de cliente o proveedor, contado o crédito, el detalle del documento, etc. En los dos casos, tanto compras como ventas, manejan información que normalmente es diferente, si los miras a detalle, pero sino son casi iguales.
Si no llevas toda esa información entonces no son compras o ventas, son documentos de ingreso y egreso, lo que aquí se llama cuenta corriente, y entonces no son dos cosas muy diferentes realmente, son documentos y nada mas, y en base al debe y el haber sabes si suma o resta.
Así que para saber si debes o no mezclar tendrías que saber que son exactamente en cada caso por aparte.
Unir cosas que son parecidas, pero no mezclar cosas que realmente son diferentes.
Cita:
Iniciado por barry17 ... solo considerando el tema del tiempo máquina, a la hora de hacer operaciones sobre la base de datos, independientemente del diseño y análisis de sistemas, solo viéndolo por el lado "de los fierros"...
El tiempo de máquina y las estructuras de tu modelo de datos en la capa de programación van a ser mucho mas eficientes con una estructura de base de datos lógica y bien diseñada. Donde no mezcles perros con carros, pero tampoco separes compras y ventas cuando solo quieres verlos como documentos simples.
Cita:
Iniciado por barry17 ... estoy muy deficiente en mi modelado de bases de datos... de ser así creo que necesito estudiar un poco mas acerca de análisis de sistemas... cierto?? ...
No lo creo así, el problema en este caso específico no creo que sea problema de modelado, lo que estabas haciendo es normalizar datos, el problema aquí es no conoces "qué" estas modelando.
Cita:
Iniciado por barry17 ... acerca de la cuenta corriente la verdad desconozco como se comporta una cuenta corriente pero voy a hechar un vistazo :) ...
Exactamente allí esta el problema, para
ser hacer un programa de contabilidad no es suficiente que sepas modelado de datos, ni seas un gurú de programación, es necesario que sepas contabilidad, así igual en todas las demás disciplinas.
Allí radica el problema en algunos programadores, que solo saben los for y los if de memoria, pero no saben aplicarlos porque no conocen la disciplina en la cual lo van a aplicar. Pensándolo bien, técnicamente para ser un profesional de la materia, normalmente se llevan estos cursos, ¿creo?, en cualquier universidad; y por eso se llevan, sino entonces tienes que estudiarlos por tu cuenta o lo que sea. Pero bueno, el punto es que tienes que entender qué estas haciendo para poder hacerlo.
Las computadoras son herramientas para facilitar ciertos procesos en otras disciplinas, no son útiles por si solas. Casi nunca vas a realizar un programa para que la computadora haga algo para ella,
no hablo de mantenimiento posiblemente solo de mantenimiento, como por ejemplo algo que nunca vas a usar sino solamente le va a servir a la computadora.
Saludos,