作者|译者AntonelloZanini|策展人李锐|如果它开发的应用能够被全世界的用户使用,那么这个目标的实现会更容易。由于并非所有用户都精通英语或开发者的母语,因此需要将其设计为多语言应用程序。但如果没有多语言数据库,这是不可能的。设计一个可以轻松扩展到新语言的多语言数据库并不容易。这就是开发人员应该依赖最佳实践的原因。这就是您需要多语言数据库的原因、三种出色的多语言数据库设计以及如何选择最适合您的数据库。下面开始介绍多语言数据库设计的相关知识。1.为什么需要多语言数据库?一个开发者可能永远不知道他的应用程序会增长多少,也许他为朋友开发的一个小应用程序有可能成为数百万人使用的国际服务。如果你想开发一个可以在国际上销售的产品,它需要多语言设计,这样它就可以很容易地适应不同的文化和市场。这就是国际化的意义所在。构建一个为国际化做好准备的数据库意味着设计一个可以存储多语言数据的数据库。换句话说,后端应该能够以多种语言提供数据。为此,后端应连接多语言数据库并从中检索这些数据。需要注意的是,允许用户在多种语言之间切换是一个很好的功能。这对于多语言或非母语人士特别有用。因此,即使正在开发的项目规模较小且针对当地市场,开发商也应考虑使用多语言数据库。毕竟,开发人员无法提前知道他们的项目会有多成功以及哪些用户会使用它。这就是为什么开发人员选择正确的多语言数据库设计至关重要的原因。2.为什么要精心设计多语言数据库更改数据库是一项非常耗时费力的操作,因为它会引发连锁反应。修改数据库的结构涉及更改连接到它的后端。这可能还需要开发人员相应地调整依赖于这些后端的前端。总之,更改数据库结构并非没有后果的操作。因此,开发人员应该设计一个无需频繁更改即可轻松扩展的数据库。可以想象,设计多语言数据库的方法有很多种,每种解决方案都各有利弊。鉴于数据库结构对应用程序的重要性,开发人员必须仔细设计多语言数据库。这就是为什么开发人员不应该从头开始而是依赖最佳实践的原因。这里有一些基于最佳实践的多语言设计。3.多语言数据库的三种设计作为一名为世界各地的初创公司工作的全栈网络开发人员,让我们更深入地探讨三种多语言设计的优缺点。(1)Column方法该方法中,多语言表中每个字段的列数等于数据库支持的语言数。具体来说,列名称模板如下所示:columnName_languageCode优点:简单:易于实施。快速:不涉及JOIN或慢速查询。未翻译字段的轻松处理:如果某个字段缺少翻译,可以直接使用。例如,COALESCE(name_it,name_en)→如果name_it不为NULL,则返回name_it,否则返回name_en默认值。缺点:难于维护:添加新语言需要更新数据库中的所有多语言表。这也意味着开发人员需要相应地更改他们的ORM映射。不可扩展:表中的列数随着应用程序支持的语言数量而增长。复杂的SELECT条件:忘掉SELECT*。需要在SELECT子句中指定每一列。(2)Row方法在该方法中,每种语言都有一行。识别多语言实体的关键是以下复合主键:
