加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 带有GUID或……的SQL Server中的数据本地化?

发布时间:2020-12-12 06:49:40 所属栏目:MsSql教程 来源:网络整理
导读:我需要创建一个高度本地化的数据库.对于几乎所有实体,我需要翻译成5种语言.一些实体甚至需要和其他资源本地化(就像我作为路径输入的图像). 现在的问题是: 1:LOOKUP TABLE PER ENTITY / TABLE(有点臃肿的架构?) 我应该为每个表创建一个“本地化”本地化查找
我需要创建一个高度本地化的数据库.对于几乎所有实体,我需要翻译成5种语言.一些实体甚至需要和其他资源本地化(就像我作为路径输入的图像).

现在的问题是:

1:LOOKUP TABLE PER ENTITY / TABLE(有点臃肿的架构?)

我应该为每个表创建一个“本地化”本地化查找表,我需要本地化的值(并使用标准的int / bigint PKs作为元素)
像这儿:

MYITEMS
-------
 - MyItemId BIGINT PK
 - MyItemPrice DECIMAL

MYITEMLOCALIZED
---------------
 - CPK_MyItemId BIGINT FK
 - CPK_LanguageCode NCHAR
 - LocalizedName NVARCHAR
 - LocalizedResourcePath NVARCHAR

CUSTOMERS
---------
 - CustomerId BIGINT PK
 - CustomerName NVARCHAR

CUSTOMERLOCALIZED
---------------
 - CPK_CustomerId BIGINT FK
 - CPK_LanguageCode NCHAR
 - LocalizedName NVARCHAR
 - LocalizedResourcePath NVARCHAR

要么

2:具有单个查找本地化表的GUID(重型guid用法?)

我应该使用GUID作为PK,然后只使用一个名称和一个资源本地化表.

MYITEMS
-------
 - MyItemId uniqueidentifier PK
 - MyItemPrice DECIMAL    

CUSTOMERS
---------
 - CustomerId uniqueidentifier PK
 - CustomerName NVARCHAR

LOCALIZED
    ---------------
     - CPK_ElementGuid uniqueidentifier FK
     - CPK_LanguageCode NCHAR
     - LocalizedValue NVARCHAR
     - LocalizedResourcePath NVARCHAR

3:单一查看,但仅限于本地化(两个世界中最好的?)

我应该使用普通的int / bigint PK,然后为我需要本地化的每个列添加GUID列,并将本地化值存储到单个本地化查找表中.

MYITEMS
-------
 - MyItemId BIGINT PK
 - MyItemPrice DECIMAL
 - ItemNameLocalizationGuid uniqueidentifier(GUID)
 - ItemPictureLocalizationGuid uniqueidentifier(GUID)


CUSTOMERS
---------
 - CustomerId BIGINT PK
 - CustomerName NVARCHAR
 - CustomeerNameLocalizationGuid uniqueidentifier(GUID)

LOCALIZED
---------------
 - CPK_ElementGuid uniqueidentifier FK
 - CPK_LanguageCode NCHAR
 - LocalizedValue NVARCHAR

4:查看本地化ID的LOOKUP表(来回走动?)

我应该创建没有guid的表,但是将本地化ID存储在母表中?

像这儿:

MYITEMS
-------
 - MyItemId BIGINT PK
 - MyItemPrice DECIMAL
 - MyItemNameLocalizedId BIGINT    

CUSTOMERS
---------
 - CustomerId BIGINT PK
 - CustomerName NVARCHAR
 - CustomerGenderLocalizedId BIGINT

LOCALIZED
---------------
 - LocalizationId BIGINT PK
 - CustomerId BIGINT FK
 - LanguageCode NCHAR
 - LocalizedName NVARCHAR
 - LocalizedResourcePath NVARCHAR

如果我使用GUID作为PK我已经阅读过我会遭受巨大的性能和数据大小的损失,但我也会立即处理跨服务器的元素唯一性,dbs ……

解决方法

首先,我强烈建议使用现有的本地化标识符标准 – 不要重新发明另一个系统!使用ISO-639标准代码语言,例如英语中的“en”,法语中的“fr”等.

有关所有已定义代码的列表,请参阅Wikipedia.

其次,根据我的经验和判断,我会使用每个实体的语言表.

我们通常在主表上有一些“系统名称”,例如英文文本,然后我们有一个表“(实体)_TX”用于各种语言的文本表示.

像这样的东西:

TABLE CustomerType
      CustomerTypeID    INT IDENTITY(1,1) PK
      CustomerTypeName  VARCHAR(100)    -- English "system" name,e.g. "Gold customer"

  TABLE CustomerType_TX
      CustomerTypeID    INT
      LanguageID        CHAR(2)   -- ISO-639 codes
      CustomerTypeText  VARCHAR(200)   -- translated texts

对我来说,这比使用单一的基于GUID的编码方案更清晰,更明确,更“直观”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读