我什至在发布之前就已经回答了我的问题,但我不确定这是否是最好的解决方案。这是业务问题:
支持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)
谁能提出一个更正确的方法来解决这个问题?
非常感谢。