1

(这是我实际项目的一个非常最小化的版本,它有更多的表链接在一起,每个表都有更多的数据和列)。

  • 您如何建议设置支持不同语言内容的内容管理系统的结构?以下方式是一个不错的选择吗?

在我当前的项目中,我有一个包含文章的数据库,这些文章由idtitletext列定义。标题和文本列是text_id列上表LanguageData的外键。该表包含整个项目的所有字符串。该表由idtext_idtextlanguage_id列组成。

例子:

Article : { id : 1, title : 1, text : 2 }

LanguageData : { id : 1, text_id : 1, text : "Title in english", language_id : 1 }
LanguageData : { id : 2, text_id : 1, text : "Tittel på svenska", language_id : 2 }
LanguageData : { id : 3, text_id : 2, text : "Text in english", language_id : 1 }
LanguageData : { id : 4, text_id : 2, text : "Texto en español", language_id : 3 }
  • 我如何制作一个快速的 Web 服务来返回具有指定语言的文章?

在我的项目中,我还有一个 web 服务,它以 language_id 作为输入并返回所有添加了正确语言字符串的文章。为此,我使用实体框架连接到数据库,并且对于数据库中的每篇文章以及作为 LanguageData 外键的每一列,我调用一个方法:

GetLanguageString(text_id, language_id)
   return LanguageData.First(ld => ld.text_id == text_id && ld.language_id == language_id)
  • 当我想浏览 600 篇包含很多与 LanguageData 相关联的列的文章时,这似乎很慢。有没有更好的方法来做到这一点?此处未提及的某些列通常在文章之间重复(例如列类别)。如果我已经在字符串中搜索了相同的文本和相同的语言,我是否应该保存 lambda 问题的结果以便不需要再次执行它们?如果我使用 lambda 表达式或 LINQ,它会更重要吗?它们同样快吗?

我们很乐意收到有关该主题的一些文档。我是后端编程的新手,我似乎无法在网上找到有关此的信息。

非常感谢。

4

1 回答 1

1

我决定这样做:

对于每篇文章,我都有一个 articleText,因此我将所有非特定语言的信息放在 article 表中,然后将其余信息放在 articleText 表中。每行代表不同的文章或语言。然后我还有其他表格,比如新闻表格,这些表格也有一个与之相连的文本表格。

使用此解决方案,与 N 列的 N 个左连接相比,我只需要进行一次左连接即可以特定语言获取特定文章的所有文本。并且在所有文本都在一个表格中之前,甚至是主页的文本。现在一切都有自己的小表,主页的文本可能会在我读入字典的本地文件中,而不是对数据库进行查找。

如果你看到有什么可以做得更好的,请告诉我。

希望这可以帮助某人。

于 2012-12-13T08:59:33.277 回答