多语言数据的最佳数据库设计是什么?

Hat*_*azy 4 database-design

我正在为具有以下功能的软件设计多语言数据库:

  • 每个国家使用的数据与其他国家不同
  • 每个国家/地区使用的数据将采用 2 种语言:英语和母语
  • 将有一个中央位置来控制所有国家/地区的所有数据的更新和删除

对于这些多语言数据库,我有两种选择:

  1. 每个国家的每个实体的表格将有一列英语和母语 在此处输入图片说明

    • 我认为这种方式可以轻松快速地更新每个国家/地区的数据,而且我可以将自己的表格分开,以便与那里的软件一起使用。
    • 但这意味着如果我有 15 个国家/地区,我必须重复表格 15 次。
  2. 所有语言的表格作为参考,链接到每个实体的表格,其中包含所有国家所有语言的数据 在此处输入图片说明

    • 它将使我的数据库更简单,表数量更少,检索数据也更简单。
    • 但是将所有国家的一个实体的所有数据放在一张表中是危险的。因此,任何攻击或错误都会破坏我为所有这些国家所做的工作。
    • 我可以在同一个表中排列数据,使相同语言的每一行都放在一起吗?
    • 我可以将每个国家所需的数据从中央表中分离出来,以便仅在那里与软件一起使用吗?

Lei*_*fel 7

第一个选项的主要缺点是您必须为 n 种不同语言创建/维护类似的表结构,并且您的应用程序必须在它们之间切换。添加新语言后,您必须添加表格并修改您的应用程序。您的第二个选择是两者中的首选。我将解决您的一些担忧。

  • 如果您的安全性依赖于将数据分离到不同的表中,那么您的安全性需求就会发挥作用。当然,将它们分开会提供一定程度的额外安全性,但是如果您通过不维护多个表来节省时间来验证/增加其他安全措施,您将获得更大的好处。
  • 当您查询数据时,您可以按语言排序。
  • 国家/地区的 WHERE 子句将仅检索特定国家/地区的数据。

我建议您将主要详细信息(包括英文名称)存储在更简单的表中,然后每个具有其他语言等效项的表都可以有一个包含所有其他语言的语言特定表。像这样的东西:

语言
   ID
   名称

药品
   ID
   价格
   名称
   相互作用
   机制
   用途

DrugLanguages
   DrugID
   LanguageID
   名称
   交互
   机制
   使用

公司
   ID
   名称
   地址
   活动

CompanyLanguages
   CompanyID
   LanguageID
   名称
   地址
   活动

你应该知道我从来没有做过多语言设计,所以我的方法可能有我无法理解的局限性。