• And how do these fit in to that one purpose?:

    public int PhysicalStock

    public int SystemStock

    public int Difference

    The one purpose is the storage of stock information.  Those are attributes of the dataType.  Look at systypes, there are lots of attributes for the SQL defined fields.

    OK, not a good example, the results of systypes are static for an individual type and the results of those properties are not static in the resultset.  The existence of the properties are like an extended set of attribute fields for the data type.

    Also, in my prior post, I showed how you can in fact treat the two fields in the struct as independent values.  Which I agree isn't normalized.

    Neither is an image, because I can upload the image, change a pixel's color/brightness, and re-save the image back into SQL.  I am treating that pixel as an independent value with 4 byte attributes associated with it and storing that pixel with thousands of others that make up a picture.  It's all in your point of view of what is normalized data.

    Also, you can normalize a DB to it's knees.  De-normalization to some degree is expected.