I assume that you are using a relational database like Mysql, Ms sql, Sqlite, Postgresql or Oracle for storage?
Gedcom is an information exchange standard, so you know how many columns you have. Perhaps the standard will be expanded with new features in the future, but there probably won't be many new features. You can easily expand the table with several new columns.
I would use a "horizontal" table, not a system-entity-attribute-value (vertical table). Vertical table systems are generally slow. They cannot be properly indexed and confuse the query optimizer.
This becomes a different story when your users can define new properties in their profiles, such as eye colo (u) r or favorite colo (u) r. How flexible do you want these profiles to be?
tuinstoel
source share