<small id='Mo4DN'></small><noframes id='Mo4DN'>

<tfoot id='Mo4DN'></tfoot>

  • <i id='Mo4DN'><tr id='Mo4DN'><dt id='Mo4DN'><q id='Mo4DN'><span id='Mo4DN'><b id='Mo4DN'><form id='Mo4DN'><ins id='Mo4DN'></ins><ul id='Mo4DN'></ul><sub id='Mo4DN'></sub></form><legend id='Mo4DN'></legend><bdo id='Mo4DN'><pre id='Mo4DN'><center id='Mo4DN'></center></pre></bdo></b><th id='Mo4DN'></th></span></q></dt></tr></i><div id='Mo4DN'><tfoot id='Mo4DN'></tfoot><dl id='Mo4DN'><fieldset id='Mo4DN'></fieldset></dl></div>
        <legend id='Mo4DN'><style id='Mo4DN'><dir id='Mo4DN'><q id='Mo4DN'></q></dir></style></legend>
          <bdo id='Mo4DN'></bdo><ul id='Mo4DN'></ul>

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

        时间:2023-06-02
      1. <tfoot id='CQRIc'></tfoot>

            <tbody id='CQRIc'></tbody>

            • <legend id='CQRIc'><style id='CQRIc'><dir id='CQRIc'><q id='CQRIc'></q></dir></style></legend>

              <small id='CQRIc'></small><noframes id='CQRIc'>

            • <i id='CQRIc'><tr id='CQRIc'><dt id='CQRIc'><q id='CQRIc'><span id='CQRIc'><b id='CQRIc'><form id='CQRIc'><ins id='CQRIc'></ins><ul id='CQRIc'></ul><sub id='CQRIc'></sub></form><legend id='CQRIc'></legend><bdo id='CQRIc'><pre id='CQRIc'><center id='CQRIc'></center></pre></bdo></b><th id='CQRIc'></th></span></q></dt></tr></i><div id='CQRIc'><tfoot id='CQRIc'></tfoot><dl id='CQRIc'><fieldset id='CQRIc'></fieldset></dl></div>

                  <bdo id='CQRIc'></bdo><ul id='CQRIc'></ul>
                  本文介绍了保存多语言数据的最佳数据库结构是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  可能的重复:
                  多语言数据库的架构

                  这是一个例子:

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

                  问题:每种新语言都需要修改表结构.

                  The problem: every new language will need modify the table structure.

                  这是另一个例子:

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

                  问题:每种新语言都需要创建新表,并且每个表中的价格"字段都是重复的.

                  The problem: every new language will need the creation of new tables and the "price" field is duplicated in every table.

                  这是另一个例子:

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

                  问题:难吗?

                  推荐答案

                  你的第三个例子实际上就是通常解决问题的方式.很难,但可行.

                  Your third example is actually the way the problem is usually solved. Hard, but doable.

                  从翻译表中删除对产品的引用,并将对翻译的引用放在您需要的地方(相反).

                  Remove the reference to product from the translation table and put a reference to translation where you need it (the other way around).

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

                  As an alternative (not especially a good one) you can have one single field and keep all translations there merged together (as XML, for example).

                  <translation>
                    <en>Supplier</en>
                    <de>Lieferant</de>
                    <fr>Fournisseur</fr>
                  </translation>
                  

                  这篇关于保存多语言数据的最佳数据库结构是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:mysql 中 SET autocommit=1 和 START TRANSACTION 之间的区别(我错过了什么?) 下一篇:单个查询中的多个选择语句

                  相关文章

                  1. <small id='XtNdV'></small><noframes id='XtNdV'>

                    <tfoot id='XtNdV'></tfoot>
                    • <bdo id='XtNdV'></bdo><ul id='XtNdV'></ul>

                      <i id='XtNdV'><tr id='XtNdV'><dt id='XtNdV'><q id='XtNdV'><span id='XtNdV'><b id='XtNdV'><form id='XtNdV'><ins id='XtNdV'></ins><ul id='XtNdV'></ul><sub id='XtNdV'></sub></form><legend id='XtNdV'></legend><bdo id='XtNdV'><pre id='XtNdV'><center id='XtNdV'></center></pre></bdo></b><th id='XtNdV'></th></span></q></dt></tr></i><div id='XtNdV'><tfoot id='XtNdV'></tfoot><dl id='XtNdV'><fieldset id='XtNdV'></fieldset></dl></div>
                      <legend id='XtNdV'><style id='XtNdV'><dir id='XtNdV'><q id='XtNdV'></q></dir></style></legend>