【问题标题】:mysql: simple multilingual content tablemysql:简单的多语言内容表
【发布时间】:2011-03-23 03:56:35
【问题描述】:

假设我有一个名为 content 的简单表,其中包含以下字段:idtitlehtmlmodified_date

我还有一个名为language 的表,其中只有idname 字段

让我的content 表多语言化的最佳方法是什么?我考虑过使用 2 个唯一标识符,但我不确定如何实现,当我有多个唯一 ID 时 auto_increments 是否仍然有效?

(另外我不喜欢丢失我的单个 id 字段作为唯一标识符,因为我已经在 php 中建立了一个模型,它允许我轻松地根据表名和 id 创建对象。)

【问题讨论】:

标签: php mysql database-design


【解决方案1】:

我会为此使用两个表。以“页面”为例:

表格:页面
字段:

  • 身份证
  • title(英文标题,供参考)
  • last_modified

表格: page_content
字段:

  • page_id(外键)
  • language_id(外键。或者,language_code)
  • 标题
  • 内容

【讨论】:

  • 谢谢,看起来不错。我的模型基于您的建议。我现在有一个名为content 的表(只有与语言无关的信息,如date_created),然后我有一个contenttranslation 表,其中包含language_idcontent_idtitlehtml
【解决方案2】:

向您的内容表添加一个 FK 字段、语言 ID 怎么样?

【讨论】:

  • 当然,但我需要一种方法来找到另一种语言的相同内容。所以如果我用语言 2 获得内容 1,我将如何在让我们的语言 3 中找到相同的内容?
  • @Jules - 当两个内容使用不同的语言时,您如何识别它们是相同的?如果您说语言和内容是 M:N,那么不要添加外键;添加一个关联表,其中包含内容 id、语言 id 列,这两个列都是现有表的 FK。
  • 内容是一样的我的意思是,它们是彼此的翻译。也许我没有说清楚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
相关资源
最近更新 更多