在与坚持一般 Latin1 排序规则的公司进行了数十年的业务交流后,我的公司面临着将信息存储在不同字符集和排序规则中的问题:希腊语。所以,是时候开始考虑重新设计我们的数据库了。
鉴于我的安装是 MS SQLServer 2008 R2,做这样的事情的最佳方法或普遍接受的指导方针是什么?多张桌子?具有不同设置的多个数据库?
我不是DBA,我只是要求有一个起点来喃喃自语。
非常感谢您的阅读以及所有愿意回复的人。
在与坚持一般 Latin1 排序规则的公司进行了数十年的业务交流后,我的公司面临着将信息存储在不同字符集和排序规则中的问题:希腊语。所以,是时候开始考虑重新设计我们的数据库了。
鉴于我的安装是 MS SQLServer 2008 R2,做这样的事情的最佳方法或普遍接受的指导方针是什么?多张桌子?具有不同设置的多个数据库?
我不是DBA,我只是要求有一个起点来喃喃自语。
非常感谢您的阅读以及所有愿意回复的人。
如果数据相同(相同的表/列)并且唯一的变化是现在有可能使用更多语言,我会说选择 UTF-8。强制将其作为所有表定义(至少是新表定义)的默认字符集,并在您的配置中将其设置为用于未指定字符集的客户端连接。
您尚未指定您使用的数据库类型(MySQL、SQL Server 等),所以我试图尽可能通用:)
引用此MS 技术页面:
因此,就像@Gonsalu 在对@TechiGurl 的评论中所说的那样:为 Unicode 构建数据库以支持多种语言。
实际上,这意味着使用nchar/nvarchar/ntext数据类型,而不是 char/varchar/text。
选择排序规则是查询优化的问题。任何排序规则都会以明确的方式对您的文本进行排序。排序规则根据特定语言和区域设置的规范,指定如何对字符串数据进行排序和比较的规则。因此,您应该选择最能满足数据库上运行的大多数查询的语言要求的排序规则。
在 OP 给出的情况下,如果希腊文本现在占所有数据的 10%,那么我将继续使用Latin1排序规则。如果有更多的希腊语数据或在数据库上运行的大多数查询都检索希腊语数据,那么我会使用Greek_Collation。
这是默认 MS 排序规则的列表。