您的第三个示例实际上是通常解决问题的方式。努力,但可行。
从翻译表中删除对产品的引用,然后将翻译的引用放在您需要的地方(反之亦然)。
[ products ]id (INT)price (DECIMAL)title_translation_id (INT, FK)[ translation ]id (INT, PK)neutral_text (VARCHAR)-- other properties that may be useful (date, creator etc.)[ translation_text ]translation_id (INT, FK)language_id (INT, FK) text (VARCHAR)
作为一种替代方法(不是很好的替代方法),您可以有一个单独的字段,并将那里的所有翻译合并在一起(例如XML)。
<translation> <en>Supplier</en> <de>Lieferant</de> <fr>Fournisseur</fr></translation>


![保留多语言数据的最佳数据库结构是什么?[重复] 保留多语言数据的最佳数据库结构是什么?[重复]](http://www.mshxw.com/aiimages/31/405190.png)
