【发布时间】:2011-12-03 07:02:17
【问题描述】:
我有数据库结构的设计问题。 目标是为我们的客户在某些地理区域提供的报价建立数据库。 每个优惠都可以在许多地区提供。
这些地区是分层的 - 示例:
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_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。 使用这种设计,我遇到了如何查询每个区域的不同报价数量以及如何查询 level1、level2 和 level3 区域的报价的问题。
【问题讨论】:
-
展示你目前所拥有的东西,然后问一些关于你目前所处位置的具体问题总是一个好主意。
-
您使用的是哪种数据库?
-
@BertEvans - 我知道。我只是问,因为经过一天的思考,我没有创建任何解决方案。我只有区域层次结构。每个区域在级别 1 和级别 2 中都有 id 和对父区域的引用。有 3 个级别。我会尽快更新我的问题。
标签: hierarchical-data regions database-design