• FWIW, I've administered/created many tables like this, never saw any terrible pain point.  Some wasted space maybe.  But I am trying to do better, and am pretty sure this is non-optimal.  I think the "right" solution would involve subclassing.  So you'd have a top-level table has only elements common to all stock items, and subclass tables with the specialized attributes.  Fact that you raised the question make me suspect you already know this.  Lots of good articles on this, and I'm pretty sure some more experts will weigh in here.