2012-09-06 54 views
1

我需要創建支持多種語言的網站,但是我從來沒有這樣做過,我需要幫助爲我的應用程序創建數據庫。多語言網站的數據庫設計

網站將成爲商業,所以讓我們以ITEM表爲例。唯一能夠快速提出的就是這個模型,但我認爲它不是很好,因爲語言表與Item表相關,但我也有公司表以及其他人。

Item 
    ID 
    Price 

Language 
    ID 
    ItemID 
    Language (example: en-US) 
    Field (example: title) 
    Value (example: Good Title) 

有人可以幫助我設計好的數據庫,將支持多種語言?

+1

爲什麼投票關閉「離題」?我認爲這是非常正常和合法的問題。 – sed

+0

Language.ID - 不必要的。使用'LangCode,ItemId'作爲PK。 – gavenkoa

回答

2

有如何多語言數據存儲在數據庫中的多種方式,我通常是這樣的:

Item 
    ID 
    price 
    title_translation_key_id (is a TranslationKey foreign key) 
    desc_translation_key_id (is a TranslationKey foreign key) 

TranslationKey 
    ID 
    key (string) 

Translation 
    ID 
    translation_key_id (is a TranslationKey foreign key) 
    content (string) 
    language_id (is a Translation foreign key) 

Language 
    ID 
    code 

如何檢索數據?

您可以使用子選擇或者如果您的數據庫表現不佳,您可以從中生成語言特定的表。

+0

這不應該是另一回事 - 翻譯對項目有外鍵嗎?如果我正確理解你的模式,如果你添加一種新的語言,你必須插入新的行到你的項目表中? –

+0

@Frank Schmitt:請閱讀原始問題,您的建議正是原作者想避免的。 –

+0

我想我會使用http://stackoverflow.com/a/929430/440611方法畢竟,它似乎是更容易做'ProductTranslation,CategoryTranslation等..'謝謝回答 – sed