1

在我的 My-SQL 数据库中,我有一个文章表(列 article_id、article_name 和 highlight(需要在这个问题中讨论))。这个名为“Highlight”的列定义了一篇文章的亮点。我需要以不同的语言存储此列。

1)一种方法是..我将在同一张表中取四列。说Hightlight_en、Highlight_german、Highlight_french等等。

2)其他方式是我将为每种语言创建不同的突出显示表。

请根据良好的数据库设计建议我应该采用哪种方式。也欢迎您的想法。

还有一件事..我是否需要在 java 中做一些额外的事情来存储多语言数据(任何 UTF-8 设置)。请告诉我。

4

1 回答 1

4

我建议不要使用您描述的任何一种方法。相反,创建一个highlight包含 3 列的表:

CREATE TABLE highlight 
(
  article_id INT NOT NULL,
  language VARCHAR(),
  highlight_text VARCHAR() CHARACTER SET utf8,
  PRIMARY KEY (article_id, language),
  FOREIGN KEY (article_id) REFERENCES articles (article_id)
)

每行链接到一篇文章article_id,并包含一个语言版本和相关文本。这使您可以根据需要添加尽可能多的语言,并且如果文章缺少一种语言并不重要 - 它根本不会出现在表格中。如果有必要,它还允许您在每篇文章中使用完全不同的语言集。

然后值看起来像:

2  en  The English text for article 2
2  dr  The French text for article 2
2  de  The German text for article 2
3  en  The English text for article 3
3  dr  The French text for article 3
3  de  The German text for article 3
3  sw  Oh wait, article 3 also needed Swahili text!
于 2012-04-15T17:32:28.087 回答