Модель данных — регионы и страны
Мы разделили карту мира на 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 доступен только в Республике Молдова и Румынии, в частности, в регионе Западной Европы.