的(MySQL的),我們正在開發這是應該支持多語言的問題是,當涉及到動態的領域和如何設計數據庫爲他們數據庫設計模式的多語言web應用程序
讓的說,我們的Web應用程序有這些表:
product(id(Primary),name(text),description(text))
Category(id(Primary),name(text),description(text))
,當談到在3種不同的語言在插入數據庫中的數據,我們應該有名稱,描述到目前爲止,我決定實施的數據庫如下: 1.創建一個表作爲中間表具有以下結構:
language_itme(id)
然後創建另一個表語言具有以下狀結構:
language(id(Primary),field_name(text),en(text),fr(text),it(text),language_item_id(INT))
ITEM_ID指language_item表 然後添加以下字段表中的產品和類別的標識語言,
product(id(Primary),name(text),description(text),language_item_id(INT))
Category(id(Primary),name(text),description(text),language_item_id(INT))
因此,對於插入產品,我們將在數據庫中插入這些行:
Auto_Generated_num -> language_item;
然後,
(Auto_Generated_num, productName,productDescription, last_id of language_item)
-> product
然後
(Auto_Generated_num, name, productName in English, productName in French,
productName in Italian, last_id of language_item) -> language
(Auto_Generated_num, description, productDescription in English,
productDescription in French, productDescription in Italian,
last_id of language_item) -> language
是否有人在這裏可以幫我這個結構的改變,使之更好但從設計和性能上來看,甚至有經驗多語言網站,併爲我提供更好的解決方案
在此先感謝
感謝您的詳細和描述性答案,這個解決方案結構更好,比我的結構更完善,但我仍然有點困惑Products_L表應該做些什麼?似乎一切工作正常,只是沒有它 還有一件事,以及你必須創建Categories_T和Categoreis_L的類別以及 換句話說,每個單表需要翻譯2個額外的表 – Siavosh
如果只有一個PRODUCTS_T表格,那麼如果翻譯不可用,您可能會錯過它 - 這在我的應用程序中是不可接受的 - 或者您將一種語言的翻譯重複爲缺少的語言 - 這不是標準化的設計。 PRODUCTS_L表的引入爲每種支持語言的語言相關屬性提供了標準化設計和值。一般來說,設計越規範化,表格的數量就越多。 – DrabJay
雖然我的問題可能沒有一個正確的答案,它是關於在特定情況下的最佳做法和設計,但由於您的設計已正常化,我認爲它是正確的,謝謝你的時間 – Siavosh