mysql - 数据库设计 : how to support multi-lingual site?

标签 mysql database database-design data-modeling

假设我有一张 table :

TABLE: product
=================================================================
| product_id | name           | description                     |
=================================================================
| 1          | Widget 1       | Really nice widget. Buy it now! |
-----------------------------------------------------------------

如果我想提供多语言支持,最好的方法是什么?

可能的解决方案:

  1. 在上表中添加一个“语言”列;这将指示特定记录的语言。 (我认为这不适合我,因为其他表将使用 product.product_id 作为其 FK。)
  2. 删除产品表中的所有可翻译列(在上面的示例中,product.name 和 product.description)并将其放在一个单独的表中,其中包含“语言”列。该新表将使用 product.product_id 作为 FK。 (我不会在我的应用程序的第一个版本中支持多语言。此解决方案意味着我必须执行额外的 JOIN 操作才能获取最初支持的语言的值。)
  3. 还有什么我没有考虑到的?

最佳答案

我会选择解决方案 2。

此选项将最大限度地减少您的第一个版本的工作,并将减少未更改的列之间的重复。

它确实需要一个额外的 JOIN,但它是一个简单的键连接,因此不会对您的性能产​​生太大影响。

关于mysql - 数据库设计 : how to support multi-lingual site?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559342/

相关文章:

PHP SQL 我想在表的1行中显示2组数据

mysql - 删除 MySQL innodb 中的孤立临时表

sql - 设计表格时如何实现一对一、一对多和多对多的关系?

swift - 在Firestore中构建好友系统的最佳方法是什么?

python - 如何检查表中尚不存在用户名?

php - 我是否可以扩展 mysql 表中的 SKU 数据字段以方便/高效地进行查询?

mysql - 将 Sequelize 与 ActiveRecord 一起使用

PHP UTF-8 编码搞砸了

android - 将数组插入Mysql?

Python - 用于将数据插入数据库的 MySql 访问