我正在撰写一个调查网站,向用户提出多项选择问题。
在单一语言的情况下,设计数据库模式非常简单,但只要有多个语言,模式就会变得模糊不清。
我的直觉告诉我,我有以下表格(删除了所有讨厌的位):
问题(id)
选择(id,questionid)
问题翻译(questionid,languagecode,content)
choicetranslations(choiceid,languagecode,content)
答案(userid,questionid,choiceid)
现在,我知道这会起作用,但我不禁想到桌子的#不必要地膨胀。
有没有人就不同的方法或改进方法的方法提出建议?
注意:语言数量在发布时已修复,但可能会随着时间的推移而增长。
答案 0 :(得分:1)
架构看起来很好。您还可以为每个问题和选择使用唯一键,然后只需要一个包含键,值,区域设置(语言 - 国家/地区标识符)的表。这会将您的翻译表减少一个。它还将创建一个通用的翻译系统,使问题的模式与翻译模式分离。
我们为我们的应用程序使用类似的模式来提供常规翻译服务,该服务还有一个用于监视翻译未命中的附加表,如果服务无法在请求的语言环境中提供翻译,则会记录密钥和区域设置。