How to organize database for translations, performance? I am working on a new project for an international website. The task is to get this available in 16 languages.

On the database structure, I was wondering if there is any performance advantage or disadvantage between these two approaches. What would be the preferred choice and why?

Approach #1



Approach #2
Generally, it's better practice to encapsulate the data as you did in your second approach.

This is because...


  When a fully normalized database structure is extended to allow it to accommodate new types of data, the pre-existing aspects of the database structure can remain largely or entirely unchanged. As a result, applications interacting with the database are minimally affected.


By following this tenant of normalizing, it's far easier to add, update, or remove rows to a table than it is to alter the table by adding/removing columns. Languages may change over time, but the table ideally should stay the same and not need to be in flux to accommodate changes in the data.