开发者社区> 问答> 正文

保留多语言数据的最佳数据库结构是什么??mysql

这是一个例子:

[ products ] id (INT) name-en_us (VARCHAR) name-es_es (VARCHAR) name-pt_br (VARCHAR) description-en_us (VARCHAR) description-es_es (VARCHAR) description-pt_br (VARCHAR) price (DECIMAL) 问题:每种新语言都需要修改表结构。

这是另一个例子:

[ products-en_us ] id (INT) name (VARCHAR) description (VARCHAR) price (DECIMAL)

[ products-es_es ] id (INT) name (VARCHAR) description (VARCHAR) price (DECIMAL) 问题是:每种新语言都需要创建新表,并且每个表中都有“价格”字段重复。

这是另一个例子:

[ languages ] id (INT) name (VARCHAR)

[ products ] id (INT) price (DECIMAL)

[ translation ] id (INT, PK) model (VARCHAR) // product field (VARCHAR) // name language_id (INT, FK) text (VARCHAR) 问题:难吗?

展开
收起
保持可爱mmm 2020-05-17 20:58:33 974 0
1 条回答
写回答
取消 提交回答
  • 您的第三个示例实际上是通常解决问题的方式。努力,但可行。

    从翻译表中删除对产品的引用,然后将翻译的引用放在您需要的地方(反之亦然)。

    [ 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)。

    Supplier Lieferant Fournisseur 来源:stack overflow

    2020-05-17 21:01:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像