我有数据库结构的设计问题。目标是为我们的客户在某些地理区域提供的报价建立数据库。每个优惠都可以在许多地区提供。
这些区域处于层次结构中 - 例如:
subregion_1
subregion_11
region_111
region_112
subregion_12
region_121
region_122
subregion_2
subregion_21
region_221
现在我想将 offer_1 和该优惠的区域存储在数据库中。我会给你 3 个我必须实现的例子:
- 当我的 offer_1 存储在 region_111 中时,我想在用户浏览 subregion_1、subregion_11 和 region_111 时显示此优惠
- 如果 offer_1 存储在区域 subregion_11 和 region_121 中,那么当用户浏览 subregion_1、subregion_11 以及 subregion_11、subregion_12 和 region_121 的所有分支时,应显示 offer
- 当我的 offer_1 存储在 subregion_1 中时,offer 将显示在 subregion_1 页面和 subregion_1 下的所有分支上。
此外,我必须提供一种方法来动态且非常快速地计算每个区域中不同报价的数量。有人对如何接近这种设计有一些建议吗?
这是我到目前为止所拥有的。
Regions
------------------------------------------------------------
| id | level1 | level2 | level3 | name | level |
------------------------------------------------------------
| 02 | 02 | null | null | subregion_1 | 1 |
| 0201 | 02 | 01 | null | subregion_11 | 2 |
| 020103 | 02 | 01 | 03 | region_111 | 3 |
------------------------------------------------------------
Offers to regions
------------------------
| offer_id | region_id |
------------------------
| 1 | 020103 |
| 1 | 0202 |
------------------------
我为连接 level1、level2 和 level3 的区域创建了 id。在表 Offers_to_regions 中,我存储了报价和地区。在这里,我有 3 级 (020103) 上的区域和 2 级 (0202) 上的报价 1 区域。使用这种设计,我遇到了如何查询每个区域的不同报价数量以及如何查询 1 级、2 级区域的报价的问题和三级地区。