亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多語言數據庫的架構

多語言數據庫的架構

多語言數據庫的架構我正在開發一個多語言軟件。就應用程序代碼而言,本地化不是問題。我們可以使用特定于語言的資源,并擁有各種工具,它們可以很好地工作。但是,定義多語言數據庫模式的最佳方法是什么?假設我們有很多表(100或更多),每個表可以有多個可以本地化的列(大多數nvarchar列應該是可本地化的)。例如,其中一個表可能保存產品信息:CREATE TABLE T_PRODUCT (   NAME        NVARCHAR(50),   DESCRIPTION NTEXT,   PRICE       NUMBER(18, 2))我可以想到三種方法來支持名稱和描述列中的多語言文本:每種語言的單獨列當我們向系統添加一種新語言時,我們必須創建額外的列來存儲翻譯的文本,如下所示:CREATE TABLE T_PRODUCT (   NAME_EN        NVARCHAR(50),   NAME_DE        NVARCHAR(50),   NAME_SP        NVARCHAR(50),   DESCRIPTION_EN NTEXT,   DESCRIPTION_DE NTEXT,   DESCRIPTION_SP NTEXT,   PRICE          NUMBER(18,2))每種語言都有列的翻譯表只存儲翻譯表的外鍵,而不是存儲翻譯文本?!胺g”表包含每種語言的一列。CREATE TABLE T_PRODUCT (   NAME_FK        int,   DESCRIPTION_FK int,   PRICE          NUMBER(18, 2))CREATE TABLE T_TRANSLATION (   TRANSLATION_ID,   TEXT_EN NTEXT,   TEXT_DE NTEXT,   TEXT_SP NTEXT)每種語言都有行的翻譯表只存儲翻譯表的外鍵,而不是存儲翻譯文本?!胺g”表只包含一個鍵,另一個單獨的表包含每個翻譯成一種語言的行。CREATE TABLE T_PRODUCT (   NAME_FK        int,   DESCRIPTION_FK int,   PRICE          NUMBER(18, 2))CREATE TABLE T_TRANSLATION (   TRANSLATION_ID)CREATE TABLE T_TRANSLATION_ENTRY (   TRANSLATION_FK,   LANGUAGE_FK,   TRANSLATED_TEXT NTEXT)CREATE TABLE T_TRANSLATION_LANGUAGE (   LANGUAGE_ID,   LANGUAGE_CODE CHAR(2))每個解決方案都有優缺點,我想知道您對這些方法的經驗,您推薦的是什么,以及如何設計一個多語言的數據庫模式。
查看完整描述

3 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

第三種選擇是最好的,原因如下:

  • 不需要更改新語言的數據庫架構(從而限制代碼更改)
  • 不需要為未實現的語言或特定項的翻譯占用大量空間
  • 提供最大的靈活性
  • 你不會有稀疏的桌子
  • 您不必擔心空鍵,也不必檢查是否正在顯示一個現有的轉換,而不是一些空條目。
  • 如果更改或擴展數據庫以包含其他可翻譯的項/事物/等,則可以使用相同的表和系統-這與其他數據非常不耦合。


查看完整回答
反對 回復 2019-07-13
  • 3 回答
  • 0 關注
  • 994 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號