复杂的搜索,按地区和理事会以及其他几个领域进行搜索,需要表格结构帮助

时间:2013-04-04 12:22:38

标签: mysql sql search structure

我需要一个搜索功能来搜索数据库中的项目,但我甚至不确定如何正确地将它们保存在数据库中。

我想按地点,地区和议会进行搜索,其余部分更直接。

但每个项目可以有多个区和理事会,如何将它们保存在数据库中?添加另一个将项目ID与地区相关联的表格以及另一个与理事会相关的表格?

这样的东西
|id|item_id|district|
----------------------
|1 | 1     |dis_1   |
|2 | 1     |dis_2   |
|3 | 1     |dis_3   |
|4 | 1     |dis_4   |

然后是一个类似的理事会表?

然后搜索将区/理事会与item_id匹配。

我在想什么?

1 个答案:

答案 0 :(得分:0)

通常,当您拥有多对多关系时,可以使用关系表解决该问题。因此,在上面的示例中,如果您有一个Item表和一个District表,那么您将创建一个只有两列的ItemDistrict表:ItemId和DistrictId。此表不需要自己的id键,因为ItemId和DistrictId的组合是主键。

如果理事会独立于地区且一个项目可以有多个理事会,那么您将拥有第二个表ItemCouncil,其中包含ItemId和CouncilId。

但是如果区域与理事会相关并且项目与区/理事会组合的子集相关,则需要一个与所有三个表相关的表:具有3列的ItemDistrictCouncil:ItemId,DistrictId和CouncilId。

如果该项目实际上只与该区域相关,并且该区域与理事会有关,那么通过推断该项目与对应于该区域的任何理事会相关,您只需要ItemDistrict表。在这种情况下,您将通过理事会对该区的外键加入理事会。