Better DB design to have a SUM column, or to constantly add up all relationship items per query?
As ever - it depends. 

If you have a blisteringly quick DBMS or only a handful of items in each invoice, then totalling them up on the fly would be the cleanest (and, therefore, "best") option. 

The "Ivory-Tower Database Purists" would say that you should never store anything that you can derive dynamically (citing Date-of-Birth vs Age).  Realistically, it depends on just how long it takes to do that derivation! 

If you have an "ordinary" database, or hundreds or even thousands of items in each invoice and you need that summarised total frequently, then maintaining the summary field at the Invoice level might be the better solution.  [Per-row] Triggers are the way to achieve this, so that no update to any item gets missed. 

All that said, if I were in your position, I'd go with on-the-fly totalling ...   at least until the application's performance began to suffer, and then I'd think about "optimising" this aspect of it.