gpt4 book ai didi

mysql - 用于国际和多语言目的的数据库建模

转载 作者:IT老高 更新时间:2023-10-28 23:41:39 25 4
gpt4 key购买 nike

我需要为多语言的 Web 应用程序创建一个大规模的 DB 模型。

我每次思考如何做到这一点时都有一个疑问,那就是如何解决一个字段的多个翻译问题。一个案例。

管理员可以从后端编辑的语言级别表可以有多个项目,例如:基本、高级、流利、重要...在不久的将来可能会增加一种类型。管理员去后端添加一个新级别,它会在正确的位置对其进行排序.. 但是我如何处理最终用户的所有翻译?

数据库国际化的另一个问题是,用户研究可能会因美国、英国和德国而异……在每个国家/地区,他们都会有自己的水平(可能与另一个国家等价,但最终不同)。那么计费呢?

您如何进行大规模建模?

最佳答案

这是我设计数据库的方式:

Data model

DB Designer Fork 的可视化

i18n 表只包含一个 PK,因此任何表只需要引用这个 PK 来国际化一个字段。然后,translation 表负责将此通用 ID 与正确的翻译列表相关联。

locale.id_locale 是一个 VARCHAR(5) 来管理 enen_US ISO syntaxes .

currency.id_currency 是一个 CHAR(3) 来管理 ISO 4217 syntax .

您可以找到两个示例:pagenewsletter。这两个 admin-managed 实体都需要国际化他们的字段,分别是 title/descriptionsubject/content

这是一个示例查询:

select
t_subject.tx_translation as subject,
t_content.tx_translation as content

from newsletter n

-- join for subject
inner join translation t_subject
on t_subject.id_i18n = n.i18n_subject

-- join for content
inner join translation t_content
on t_content.id_i18n = n.i18n_content

inner join locale l

-- condition for subject
on l.id_locale = t_subject.id_locale

-- condition for content
and l.id_locale = t_content.id_locale

-- locale condition
where l.id_locale = 'en_GB'

-- other conditions
and n.id_newsletter = 1

请注意,这是一个规范化的数据模型。如果你有一个庞大的数据集,也许你可以考虑 denormalizing it优化您的查询。您还可以使用索引来提高查询性能(在某些数据库中,外键会自动建立索引,例如 MySQL/InnoDB )。

关于mysql - 用于国际和多语言目的的数据库建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10693508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com