2011-08-23 61 views
1

我正在爲我的cms寫一個本地化插件。我有幾個選擇來做到這一點,但最簡單的是爲每種語言創建額外的列(如title_en,content_en)。哪一個最適合我的項目性能,更多列或更多行?

另一種方式是創建一個名爲「語言」欄和每一篇文章我創建一個行中的每個語言。然而,動態區域只有'標題','內容'和'nice_url',但有10列(id,類別,顯示,日期...),這些列是不必要的。

的其他方式(如創建額外的表名爲article_translations)不適合我的CMS的插件算法。

回答

2

多個列不是可擴展的,並且它的容易添加比列的行。

對每種語言的數據最好有一行。

您還沒有公佈太多的信息,但要儘量把所有的通用數據到一個表,把特定語言的數據,另一個孩子表或者一個外鍵或語言枚舉類型。如果有關於要存儲/檢索的語言的信息,請使用外鍵到語言表。如果您想檢查值,請使用枚舉,或者如果您不挑剔,請使用文本。

此外,應該注意的是,你不可能希望在同一時間不止一種語言,所以沃爾德是具有一個非常寬的表,其中一列容納所有語言的所有信息沒有任何優勢。

+0

實際上它是很容易實現我的項目,因爲如果我使用「多行」的方式我必須創建一個名爲owner_article一個額外的列,我必須檢查並更新這些行的每一個請求(如刪除,更新和編輯) –

+1

發佈一些關於你需要存儲什麼數據的更多信息。如果我們更多地瞭解你想要做什麼,我們可以幫助你更好。 – Bohemian

+0

會有文章,每篇文章都會以幾種語言顯示。一篇文章所具有的特徵將被用於每一種翻譯。 如果在我的cms中實現這個功能,它可能很容易,但它會是一個插件,如果我使用「更多行」的方式,我必須以創建插件的方式更改許多內容,因爲它實際上不適合插件特徵。 –

0

解決方案取決於您計劃支持多少種語言? 如果有幾個您可以添加幾個額外的列沒有任何問題。 使用此模型可輕鬆切換不同的語言。但是如果你打算使用多種語言,我認爲你應該考慮附加表格。

+0

用戶一般使用4-5種語言,這意味着共有15列(標題,內容,nice_url)。它會產生問題嗎? –

+0

然後,最好有一個存儲特定語言翻譯的子表。然後,您只有翻譯記錄的數量,並且不會在沒有可用翻譯的情況下填滿空表/缺省記錄。 –

+0

不,如果您不需要通過此表進行搜索,這不會成爲問題。因爲表格會很大,所以如果你使用InnoDB的話,你會得到很大的索引,甚至是主鍵 –

相關問題