2009-12-15 41 views
0

比方说,我运行一个网站给用户提供内容在线(一些评论为前...),我运行此网站在几种语言/国家(地区)下。另外,我不需要注释可以从一个语言环境访问到另一个语言环境。数据库设计:用户生成内容的国际化(评论,帖子...)

我想知道什么之间的最佳数据库设计以下2:

commentsenGB(ID,TXT)

commentsfrFR(ID:

  1. 每个区域创建1个表,txt)

    etc ...

  2. 把所有在同 意见表意见,但保留的 痕迹的语言环境/语言:

    评论(ID,TXT,id_lang)

我敢肯定,最佳DB-设计为2),但我正在考虑在这种情况下,评论表在所有语言环境之间共享,因此,条目数将呈指数级增长(nb_of_locales x更快!),并且访问表的查询时间将会受到影响,否?或者是:

SELECT * FROM comments WHERE id_lang = engb 

完全相同的查询(在执行时间期限)为:

SELECT * FROM commentsenGB 

谢谢!

回答

0

请参阅选项2.简单。并考虑你每天有多少评论?作为一个粗略的近似值,小于10.000(如果你有更多的话,网站有足够的现金流来获得更多的资源:D)。 也为language_id创建一个索引,一切都将平滑。

1

我会选择两项,但关键点是确保您的表格索引正确(因为索引将用于检索您的数据)。

这并不意味着这可能并不意味着在语言栏中添加索引(除非您需要根据语言检索评论),但可能是关联的ID(例如,您的评论可能与您的评论有关到另一个对象,说一个论坛话题)。

一般来说,我不会太担心数据库表的增长太大 - 数据库的构建过于处理大量的行,并且正如您所说维护附加表的开销可能是一个问题,对于各种原因(如维护)。

当然,还有一点需要考虑 - 您是否需要在评论级别跟踪“langauge”?例如,考虑一下英国的用户可能会用法语输入评论 - 这一切都取决于您网站的性质。其他选项可能是跟踪用户的用户位置?

+0

很好的精度感谢这! – bsagols 2009-12-17 11:18:07