首页 > 解决方案 > 数据模型 - 地区和国家

问题描述

我们将世界地图划分为 6 个区域,每个区域都有国家列表。

我们有我们标记的产品,以确保所有国家都有它。

由于我们有 200 多个国家/地区,因此我们如何对此进行建模并为每个产品标记此国家/地区列表将在表中创建大量行。

数据将通过产品 API 创建,我们在其中获取应用产品的一系列区域,然后我们在每个区域参数中获取包含的国家或排除的国家,以确定哪些是适用的所有国家。如果某个区域同时缺少包含国家和排除国家,则默认假设是该区域的所有国家/地区都是该产品包含的国家/地区的一部分。

如何对这种场景进行数据建模?我们不想将产品映射到排除的国家/地区。我们可能需要提供一个 API,可以为我们提供过滤条件中提供的国家/地区列表的产品列表。我们是否需要一个单独的表来维护地区和国家映射列表,然后在为产品识别国家之前对传入数据执行计算?

或者

一个更好的主意是始终通过包含和排除参数从 API 本身获取列表。

| seqId | Region  | Country   | ProductId
|:----  |:------: | :-----:   | ----:
| 1     | America | US        | 10001
| 2     | America | Canada    | 10001
| 3     | America | Argentina | 10001
| 4     | Asia    | India     | 10001
| 5     | MEA     | Egypt     | 10001

产品创建的示例 API 请求:

{
  "productId": 10001,
  "regions": [
    {
      "name": "America",
      "includedCountries": [
        "US",
        "Canada"
      ]
    },
    {
      "name": "Middle East"
    },
    {
      "name": "Asia",
      "excludedCountries": [
        "Nepal",
        "Japan"
      ]
    }
  ]
}

标签: apimodeldata-modelingentity-data-model

解决方案


想象一下,您有这种情况:

您有一张包含 6 个区域的表格:

RegionID RegionName
1        Western Europe
2        Central and Eastern Europe
3        Asia
4        Africa
5        Mediterranean & Middle East
6        Americas

以及包含国家及其相关地区的表格:

CountryID RegionID  CountryName
11         1        Republic of Moldova
12         1        Romania
13         1        Russia
14         1        Serbia

Republic of Moldova11 = CountryID = RegionID + CountryID使其易于理解和理解,Western Europe如果您在地理上不好的话。

产品表如下:

ProductID ProductName CountryID
1001      AAA         11
1001      AAA         12

这意味着具有 1001 作为 ID 的产品仅在摩尔多瓦共和国和罗马尼亚可用,特别是在西欧地区。


推荐阅读