相关疑难解决方法(0)

本地化SQL Server(2005/2008)数据库的最佳实践

我相信很多人都面临着将数据库后端本地化到应用程序的挑战.如果你没有那么我会非常自信地说你将来必须这样做的可能性非常大.我正在谈论为您的数据库实体存储多个文本翻译(对于货币等也是如此).

例如,经典的"类别"表可能具有应该全球化的名称和描述列.一种方法是为每个实体创建一个"文本"表,然后根据提供的语言进行连接以检索值.

这将为您留下许多"文本"表,每个表对应您要本地化的每个实体,并添加一个TextType以区分它可能存储的各种文本.

我很好奇是否有任何,记录在案的最佳实践/设计模式在SQL Server 2005/2008数据库中实现这种支持(我特别关注RDBMS,因为它可能包含支持的关键字,这有助于与实施)?

关于XML方法的思考

我一直在考虑的一个想法(虽然目前只在我的脑海中)是利用SQL Server 2005中引入的XML数据类型.我们的想法是创建应该支持XML数据类型本地化的列(并将模式绑定到它) ).XML将包含本地化字符串以及它所绑定的语言代码/文化.

有点像

Product
ID (int, identity)
Name (XML ...)
Description (XML ...)
Run Code Online (Sandbox Code Playgroud)

然后你会有像XML这样的东西

<localization>
  <text culture="sv-SE">Detta är ett namn</text>
  <text culture="en-EN">This is a name</text>
</localization>
Run Code Online (Sandbox Code Playgroud)

你可以这样做(这不是生产代码所以我会用*)

SELECT *
From Product
Where Product.ID = 10
Run Code Online (Sandbox Code Playgroud)

并且您将获得所有本地化文本的产品,这意味着您必须在客户端进行提取.这里最大的问题显然是你必须在每个查询中返回的额外数据量.好处是更简洁的设计,没有查找表,连接等等.

顺便说一句,我在设计中最终使用的方法仍然是使用Linq To SQL(.NET平台)来查询数据库(XML方法应该是一个问题,因为它会返回一个可以解释为客户端的XElement-侧)

所以关于数据库本地化设计模式的建议,以及可能对XML思想的评论,都会非常有用.

sql-server database-design localization linq-to-sql

12
推荐指数
1
解决办法
5456
查看次数