2016-10-27 41 views
0

私はニュースサービス用のDBを持っています。ニュースには、のタイトル、説明、テキストなどのローカライズ可能な文字列があります。
今私はテーブル"ニュース"とテーブル"LocalizableVariables"を持っています。DBアーキテクチャローカライズ可能な文字列

エントリはそのようになります。

News Table: 
ID (PK) | thumbnailURL   | author | etc. 
1  | www.*.*/picture.jpg | John Doe 

LocalizableVariables Table (CK = Composite Key): 
locale (CK) | newsID (CK) | name | value  
en   | 1   | title | "Example" 
de   | 1   | title | "Beispiel" 
fr   | 1   | title | "Exemple" 

をそれは、MySQLなどのリレーショナルDBで正しいとパフォーマンスの実装だろうか?
そうでない場合、最良の結果を得るために何を変更できますか?でも、正規化されていない場合

News Table (CK = Composite Key): 
ID (CK) | locale (CK) | title  | etc. 
1  | en   | "Example" 
2  | de   | "Beispiel" 

は、そのバージョンは、他のと同じ速さのようになります。

予め、私が働いている会社は、このアイデアを持っていましたか?

答えて

0

どちらもありません。

News Table - contains all language-independent columns: 
ID (PK) | thumbnailURL   | author | etc. 
1  | www.*.*/picture.jpg | John Doe 

NewsLocalization -- contains all language-dependent column; 
has a composite PRIMARY KEY(newsID, locale), no AUTO_INCREMENT: 
newsID (CK) | locale (CK) | title  | etc. 
1   | en   | "Example" 
1   | de   | "Beispiel" 

SELECT nt..., nl... 
    FROM NewsTable AS nt 
    JOIN NewsLocalization AS nl ON nl.newsID = nt.ID AND nl.locale = 'de' 
    WHERE nt... 
関連する問題