0

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

我想按位置、区和议会搜索,其余的更直接。

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

就像是

|id|item_id|district|
----------------------
|1 | 1     |dis_1   |
|2 | 1     |dis_2   |
|3 | 1     |dis_3   |
|4 | 1     |dis_4   |

然后是类似的理事会表格?

然后搜索会将地区/议会与 item_id 匹配。

我在想正确吗?

4

1 回答 1

0

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

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

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

如果该项目真的只与 District 相关,并且 District 与理事会相关,因此通过推断该 Item 与对应于该 District 的任何理事会相关,则您只需要 ItemDistrict 表。在这种情况下,您将通过议会的区外键加入议会。

于 2013-04-04T12:52:39.027 回答