Re:SQL is 43 years old – Here’s why we still use it today
by combatentropy on Wednesday May 03, 2017 @03:05AM
(#14253624)
That's called EAV (Entity Attribute Value, https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80...).
I have done it before, once. While some folks will tell you it's just wrong, like NoSQL I think it's sometimes the best fit, even for the entire life of the app.
For 99% of things, though, I use SQL tables, normalized to the Third Normal Form, foreign keys, the whole shebang.
That'd be forever extensible and if you made the primary key a combination of playerId and key, you'd offload duplicate handling to the database.
Seems simple to me.