In the past I have typically designed inventory systems to be two-part. The first being the item itself, and the second being a function category. The item data like it's image and name is held with the item, while the function category determines if the item can do anything, like act as food for a pet or be used to paint, in a specific feature, etc.
It can be a little tricky depending on how you want to vary these up but because I've never needed to search by the field I usually just store some kind of array or JSON in an extra field with any additional data needed for the item. Like a food item may fill up a pet's belly by 10pts or 50pts, etc.
It makes it easy to grab items from a user's inventory then that only apply to that function category(s) when say feeding a pet.