ホームページ >データベース >mysql チュートリアル >効率的な保存と取得のために多言語データベース構造を最適化するにはどうすればよいですか?

効率的な保存と取得のために多言語データベース構造を最適化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 08:41:02890ブラウズ

How to Optimize Multilingual Database Structure for Efficient Storage and Retrieval?

多言語データベース構造の最適化

この質問では、テーブルの変更やデータの複製の必要性を回避しながら、多言語データを保存するための最適なデータベース構造を検討します。 3 つのアプローチが示されています:

アプローチ 1:

このアプローチは、次のような言語固有の列を持つ 1 つのテーブルにデータを結合します。

[ products ]
id (INT)
name-en_us (VARCHAR)
name-es_es (VARCHAR)
name-pt_br (VARCHAR)
description-en_us (VARCHAR)
description-es_es (VARCHAR)
description-pt_br (VARCHAR)
price (DECIMAL)

制限事項: 追加される新しい言語ごとにテーブルの変更が必要です。

アプローチ 2:

このアプローチでは、言語ごとに個別のテーブルが作成されます。として:

[ products-en_us ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)

[ products-es_es ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)

制限事項: 各言語テーブルの価格フィールドが重複します。新しい言語ごとに新しいテーブルを作成する必要があります。

アプローチ 3 (推奨):

このアプローチでは、次のような構造を持つ別個の翻訳テーブルを持つニュートラル テーブルを使用します。

[languages]
id (INT PK)
code (VARCHAR)

[products]
id (INT PK)
neutral_fields (MIXED)

[products_t]
id (INT FK, PK)
language (INT FK, PK)
translated_fields (MIXED)

利点:

  • テーブル変更の回避: 新しい言語用にテーブル構造を変更する必要はありません。
  • データの重複を排除します: 価格フィールドはニュートラル テーブルに 1 回だけ保存されます。
  • パフォーマンス: 単一の LEFT JOIN を使用すると、多言語データの取得が効率的になります。

以上が効率的な保存と取得のために多言語データベース構造を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。