[英]SQL Server 2008 localization of tables
我需要本地化SQL Server 2008數據庫。 在研究了建議之后,我發現最好有單獨的表或字符串的每種語言。 這樣,可以為每個表設置不同的排序設置。 例如,典型的產品表具有ProdID,產品描述和價格字段。 推薦的解決方案是將表結構設置為Product表為ProdID和Price。 然后,每種語言的特定表將具有以下結構:ProdID和Description。
我的問題是如何創建一個存儲過程,該存儲過程的參數傳入區域性中以用於子表,然后使用該參數來聯接表? 子表需要根據參數進行更改。 那怎么辦? 我正在使用SQL Server 2008。
首先,您確定要為每種文化實施不同的表嗎? 修改您的Product表以刪除描述,然后添加具有ProdID,區域性和描述字段的ProductDescription表,會更有意義。 這樣,您就不必動用動態SQL(這是您將要使用的)來根據區域性參數選擇正確的表。
...每種語言的特定表將具有以下結構:ProdID和描述。
...這就是為什么您必須查看一個真正涉及的設置才能從數據庫中獲取信息的原因。
更好的方法是使用單個表,並為該語言使用代碼。 您也不想為要轉換的每個屬性定義一列,因此您將考慮實現以下內容:
LANGUAGES
表 LANGUAGE_ID
GUID LANGUAGE_DESCRIPTION
示例數據:
LANGUAGE_ID | LANGUAGE_DESCRIPTION
------------------------------------
1 | ENGLISH
2 | FRENCH
TRANSLATED_ATTRIBUTES
表 TRANSLATED_ATTRIBUTE_ID
,pk TRANSLATED_ATTRIBUTE_DESC
示例數據:
TRANSLATED_ATTRIBUTE_ID | TRANSLATED_ATTRIBUTE_DESC
------------------------------------
1 | PROD_ID
2 | PROD_DESC
LOCALIZATIONS
表 LANGUAGE_ID
GUID TRANSLATED_ATTRIBUTE_ID
,pk TRANSLATED_VALUE
示例數據:
LANGUAGE_ID | TRANSLATED_ATTRIBUTE_ID | TRANSLATED_VALUE
----------------------------------------------------------
1 | 1 | Product ID
2 | 1 | Produit ID
您需要一個將TRANSLATED_ATTRIBUTE_ID
與給定項目相關聯的表-產品就是您所給的示例,因此:
ATTRIBUTES
表 ATTRIBUTE_ID
ATTRIBUTE_TYPE_CODE
TRANSLATED_ATTRIBUTE_ID
,fk 示例數據:
ATTRIBUTE_ID | ATTRIBUTE_TYPE_CODE | TRANSLATED_ATTRIBUTE_ID
----------------------------------------------------------------
1 | PRODUCT | 1
如果要基於每個產品進行關聯:
ATTRIBUTES
表 ATTRIBUTE_ID
PRODUCT_ID
TRANSLATED_ATTRIBUTE_ID
,fk 現在,您可以使用兩個參數-語言(英語)和項目名稱(產品):
SELECT t.translated_attribute_desc,
t.translated_value
FROM LOCALIZATIONS t
JOIN TRANSLATED_ATTRIBUTES ta ON ta.translated_attribute_id = t.translated_attribute_id
JOIN ATTRIBUTES a ON a.translated_attribute_id = ta.translated_attribute_id
JOIN ATTRIBUTE_TYPE_CODES atc ON atc.attribute_type_code = a.attribute_type_code
JOIN LANGUAGES lang ON lang.language_id = t.language_id
WHERE lang.language_description = 'ENGLISH' --alternate: lang.language_id = 1
AND atc.attribute_type_code = 'PRODUCT'
您可以根據需要旋轉數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.