2014-01-27 29 views
3

我正在設計一個數據庫表。假設它是顏色表(紅色,綠色,藍色),用戶可以從中選擇。但是當用戶來自另一個國家時,我想顯示字段的翻譯(例如中文,紅,綠,藍)。我不確定什麼是最好和最有效的方式來存儲這樣的信息。我想出了以下思路在數據庫中,如何存儲可以具有多種語言的文本?

+----------------------+ 
| Color    | 
+----------------------+ 
| id (PK)   | 
| Language (PK)  | 
| name     | 
+----------------------+ 

通過使ID和語言作爲主鍵我可以存儲並找到顏色的名稱。

或者,我可以這樣做:

+----------------------+ 
| Color    | 
+----------------------+ 
| id (PK)   | 
| English    | 
| Chinese    | 
+----------------------+ 

這樣,我存儲在一個單獨的列顏色的名稱,以便每個顏色將只對應一個行,這似乎是更直觀。

或者我想我應該不是在數據庫中存儲不同語言的顏色名稱,而是將它們作爲字符串變量存儲在PHP中?

我也擔心表格的可維護性,因爲將來可能會有額外的顏色和語言添加到表格中。

我想聽聽你的建議。謝謝!

+0

[多語言數據庫模式]的可能重複(https://stackoverflow.com/questions/316780/schema-for-a-multilanguage-database) – EstevaoLuis

回答

1

如果將來將語言添加到表格中,則請使用第一種方法。

+----------------------+ 
| Color    | 
+----------------------+ 
| id (PK)   | 
| Language (PK)  | 
| name     | 
+----------------------+ 

在頁面加載時,您可以檢測用戶的首選語言,並且可以相應地生成SQL查詢。

1

如果您的實際模型比這更復雜,您可能需要創建一個單獨的表來存儲語言相關信息。堅持這個例子,如果對於每種顏色(R,G,B)值(即255,255,2555),這些值不隨語言而改變,您可能只想讓Color表成爲與語言無關的所有字段,新表Color_Lang,它具有一個外鍵來着色並保存所有依賴於語言的字段。

0

不是一個直接的答案,但考慮到顏色,你可以只顯示實際顏色並且不用人造的詞來描述它。

甚至還有可用於此特定用途的開箱顏色選擇器。

相關問題