gpt4 book ai didi

sql-server - SQL Server 中的数据本地化与 GUID 或...?

转载 作者:行者123 更新时间:2023-12-02 15:15:06 26 4
gpt4 key购买 nike

我需要创建一个高度本地化的数据库。对于几乎所有实体,我都需要翻译成 5 种以上语言。有些实体甚至需要本地化的附加资源(例如我作为路径输入的图像)。

现在的问题是:

1:每个实体/表查找表(有点臃肿的架构?)

我是否应该为每个需要本地化值的表创建一个“本地化”本地化查找表(并对元素使用标准 int/bigint PK)就像这里:

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 的查找表(来回?)

我应该创建没有 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,我将遭受巨大的性能和数据大小损失,但我也会立即处理跨服务器、数据库的元素唯一性......

最佳答案

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

参见Wikipedia获取所有已定义代码的列表。

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

我们通常在主表上有一些“系统名称”,例如英文文本,然后我们有一个表“(entity)_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 的编码方案更清晰、更明确、更“直观”。

关于sql-server - SQL Server 中的数据本地化与 GUID 或...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com