En esta base de datos de referencia bastante simplificada para que se entienda la idea, el stock de cada material aumenta con cada guía ingresada y disminuye con cada vale ingresado.
La pregunta es, si deseo listar todos los productos y mostrar el stock real de cada uno, que me conviene más:
a) Obtener el stock mediante una consulta que realice las operaciones de suma y resta, de acuerdo a los registros de las tablas detalles_guias y detalles_vales.
b) Agregar un campo stock a cada producto y realizar la operación de suma y resta según se agregue una guía o un vale utilizando transacciones para asegurar la integridad de datos.
Según entiendo la primera opción sería más costosa en términos de eficiencia pero garantizaría un stock real en el caso que se eliminara o editara un registro manualmente.
La segunda opción sería más eficiente pero en el caso que se borre o edite un registro los datos perderían la coherencia.