Disclaimer: I do not claim this is the best (or even a good way) to design and implement an inventory system. There is a slight (great) chance that I throughout the authoring of this post decide that ‘this is stupid’ and just scrap the system all-together and start over. If so, you’ll get your money(time).