質問を投稿する前でも回答がありますが、それが最善の解決策かどうかはわかりません。ビジネス上の問題は次のとおりです。
固定データ テーブルの i18l をサポートするため。アプリケーションは完全にロケールを認識しますが、ページに表示されるテキストの一部はデータベースから取得されます。次に例を示します。
テーブルは「期間」です:
INSERT INTO PERIOD (lang, ref, desc) VALUES
('en', 'HOUR', 'Hourly'),
('en', 'WEEK', 'Weekly'),
('en', 'MONTH', 'Monthly'),
('de', 'HOUR', 'Stündlich'),
('de', 'WEEK', 'Wöchentlich'),
('de', 'MONTH', 'Monatlich');
自動生成された ID を使用しない理由は、誰かがドイツ語でサイトを使用していて、毎週の発生に「Wochentlich」を選択した場合、ロケールが英語に変更された場合に「毎週」を使用したいからです。表示されます。ID を使用していた場合、それは実際に選択されたアイテムに固定され、「このクライアントには wochtenlich スタンディング オーダーがあります」のような文になってしまいます。そのため、代わりに「ref」を「外部キー」として保存することで解決しました。このようなデータを取得するための各クエリは、'ref' および 'lang' パラメータを使用して、現在設定されている言語で正しい項目を取得します。
VARCHAR を外部キーとして指定できないため、データベースで正しい関係が得られないという欠点があります。(MySQL 5.x を使用しています)
この問題を解決するためのより正しい方法を提案できる人はいますか?
どうもありがとう。