Three points.
You need your code to be stable. Occasionally you will have to change it to add new item types or features, but it will always have to be backward compatible.
So new items, and as far as possible new types of items will be added in data, not code. It matters not a bit whether you use a database, text file, XML, JSON or binary blobs, because...
You need to provide a user interface for updating the data. When new things have to be added, the user goes to a form or screen or data entry device that allows new stuff to be added and checked for validity. That is how it's done (or should be done).
When you do need to add new functionality, as well as backward compatibility you need to upgrade/migrate existing databases. Users don't like to lose what their work just for your convenience.