设计具有列的表需要以四种不同的语言存储

时间:2012-04-15 17:29:21

标签: mysql database database-design

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

1)一种方法是..我将在同一个表中占用四列。说Hightlight_en,Highlight_german,Highlight_french等等。

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

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

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

1 个答案:

答案 0 :(得分:4)

我建议不要使用您描述的这些方法之一。而是创建一个包含3列的highlight表:

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!