> Are there any general guidelines determining when it makes sense to normalize?
Not really. It depends on how big the docs are and how often your keys are updated. My personal approach is to code it whichever way is easiest and then hope it works well. It is rare that I have to go back and change it. If you abstract your code properly, and with some luck, it could be easy to change the schema even after it has been running a while.
