在我的My-SQL数据库中,我有一个文章表(列有article_id,article_name& highlight(需要在此问题中讨论))。这个名为“突出显示”的列定义了文章的重点。我需要以不同的语言存储此列。
1)一种方法是..我将在同一个表中占用四列。说Hightlight_en,Highlight_german,Highlight_french等等。
2)其他方法是我将为每种语言创建不同的突出显示表。
请根据良好的数据库设计建议我应该采用哪种方式。您的想法也很受欢迎。
还有一件事......我需要在java中做一些额外的事情来存储MultiLingual数据(任何UTF-8设置)。请告诉我。
答案 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!