Mark,
I would propose to you that in fact your data designs are fully normalized. The product description in the invoice line table is NOT the same data as the one in the inventory table, so you do not have duplicate data. The inventory table has the CURRENT description and the invoice line table has the description at the TIME of the invoice. The same for the tax stuff.