Item System question

Thank you for the response. Another part that I cannot figure Is how I can still have the system still dynamic, I mean I have a weapon class maybe but at the end every weapon is the same the various variable change, like shooting distance, projectile shot, maganize, animations, etc… How can I store that data dynamically?
I was thinking of two ways:

I save the data to a different table like WeaponData but then I will find myself bloating the table with data for the other items. I mean if I add a WeaponData and then a MagicItemData, ConsumableData each row will have a lot of not usable stuff. Because here is never going to be a weapon that is a consumable for example.

The other is I have a Enum and a Instanced Struct.
The Enum is used to check which type of struct will be in the instanced struct.

I don’t know, let me know what do you think, or if you have any other idea. Thanks