من نظر شخصی خودم رو میگم البته:چند تا سوال وجود داره
1 و 2 : سند بهتره یکجا باشه و با یک فیلد نوع سند شناسایی بشه.
3 و 4و 5 : این نگهداری جمع های انباشته (یا هر نوع محاسبه مشابه از جدول ریز عملیات) رو فکر کنم برای بالا بردن سرعت محاسبات انجام میدن.
شاید در نگاه اولی کار خوبی بنظر برسه ولی در کل کار ریسکی هست؛
چون کافیه فقط یک مورد از insert/update/delete در جدول detail از دست دربره و اونوقت اون جمع انباشته در جدول master بی اعتبار هست.
برای اطمینان همه عملیات رو باید در transaction بیارن و روتین trigger ها هم باید خیلی دقیق باشه (بدون تریگر انجام تغییرات در کد خیلی پیچیده میشه).
بهتره نتایجی از این دست فقط موقع نیاز محاسبه بشه.