6
A
回答
11
首先確保database locale可以處理不同的語言。使用UTF-8服務器編碼。可選擇將LC_COLLATE = 'C'
設置爲中立,或使用第一種語言的排序規則來設置默認排序順序。首先閱讀手冊中的章節Collation Support。
我強烈建議您使用PostgreSQL的最新版本(寫作時爲9.1),因爲它具有出色的整理支持。
至於表結構:保持簡單。這聽起來像是有一個低的,固定數量的語言來處理。您可以爲每種語言添加一列:
CREATE TABLE txt (
txt_id serial PRIMARY KEY
,txt text NOT NULL -- master language NOT NULL?
,txt_fr text -- others can be NULL?
,txt_es text
,txt_de text
);
即使使用多種語言,這也是非常有效的。 NULL storage is very cheap.
如果您有不同數量的語言需要處理,單獨的表可能是更好的解決方案。此解決方案假定您有一個「語言大師」,這裏的字符串總是存在:
CREATE TABLE txt (
txt_id serial PRIMARY KEY
,txt text NOT NULL -- master language NOT NULL?
);
CREATE TABLE lang (
lang_abbr text PRIMARY KEY -- de, es, fr, ...
,lang text NOT NULL
,note text
);
或者,如果(兩個字母)的英文縮寫是不夠的,只需要創建一個enum
type識別語言。
CREATE TABLE txt_trans (
txt_id int REFERENCES txt(txt_id) ON UPDATE CASCADE ON DELETE CASCADE
,lang_abbr text REFERENCES lang(lang_abbr) ON UPDATE CASCADE
,txt text NOT NULL -- master language NOT NULL?
,CONSTRAINT txt_trans_pkey PRIMARY KEY (txt_id, lang_abbr)
);
不治療的主要語言的特殊和保持所有語言版本在同一表可能使在處理您的應用程序更簡單。但這取決於你的要求。
相關問題
- 1. 聰明的多語言最佳實踐
- 2. 最佳實踐:Django多語言
- 3. android多語言方法 - 最佳實踐
- 4. 多語言MVC 4最佳實踐
- 5. Yii:多語言網站 - 最佳實踐
- 6. 在asp.net中存儲語言變量的最佳實踐
- 7. C - 字符串的最佳實踐
- 8. 設置多語言存儲(任何sql升級)的最佳實踐是什麼?
- 9. OpenGL着色語言最佳實踐
- 10. 語言特定網站,最佳實踐
- 11. 字符串常量...最佳實踐?
- 12. PHP字符串參數最佳實踐
- 13. 最佳實踐從字符串
- 14. Python字符串列出最佳實踐
- 15. 跨不同子域的多語言網站的最佳實踐
- 16. 存儲表達式的最佳實踐
- 17. 存儲數據的最佳實踐
- 18. ASP.Net MVC存儲CustomIdentity的最佳實踐
- 19. 存儲svg圖標的最佳實踐?
- 20. GAE:存儲密鑰的最佳實踐?
- 21. 設計多語言網站數據庫的最佳實踐
- 22. ASP.NET MVC中的多語言應用程序 - 最佳實踐?
- 23. 核心數據中多語言數據的最佳實踐
- 24. CakePHP的2.0動態多語言網站(最佳實踐問題)
- 25. 的最佳實踐與多語言支持
- 26. 節點/風帆/節點Postgres,存儲連接字符串的最佳實踐
- 27. 最佳實踐 - 存儲過程記錄
- 28. 存儲庫模式最佳實踐
- 29. 常用存儲庫maven最佳實踐
- 30. 備份s3存儲桶最佳實踐
您如何看待使用JSON數據類型來存儲由語言環境代碼鍵入的附加值? – 2016-10-02 21:47:39
@JeremyBaker:數據類型「json」是一個很好的解決方案,可用於大量可能變化的屬性。對於一個擁有衆所周知的屬性的人來說(比如在這個例子中)就不那麼重要了。這取決於完整的圖片。當問這個問題時,Postgres 9.2有非常基本的json支持。由於添加了'jsonb',因此事情已經有了很大的改進,... – 2016-10-03 01:58:43