Модель данных — регионы и страны

Мы разделили карту мира на 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"
      ]
    }
  ]
}

1 ответ

Представьте, что у вас есть такой сценарий:

У вас есть таблица с вашими 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

11 = CountryID = RegionID + CountryID, чтобы сделать его разборчивым и понять, что Republic of Moldovaпринадлежит Western Europeесли у тебя плохо с географией.

и для таблицы продуктов будет как показано ниже:

      ProductID ProductName CountryID
1001      AAA         11
1001      AAA         12

Это означает, что Продукт с идентификатором 1001 доступен только в Республике Молдова и Румынии, в частности, в регионе Западной Европы.

Другие вопросы по тегам