我的SQL设计存在一个主要问题。
我需要创建一个模拟以下情况的数据库: 我有一个首都列表,它看起来像这样:柏林,伦敦,布拉格,你明白了。另一个列表是旅行者名单:John,Kyle,Peter等。
数据库需要能够回答诸如以下问题的查询:给定旅行者访问过的城市列表,旅行者访问过某个城市的内容等等。 我的问题是,当我创建两个表时,我只是冻结并且无法弄清楚它们之间的连接,这将允许我实现预期的行为。
我在互联网上阅读了它,我被告知使用交叉点实体,我可以,但我不知道这对我有什么帮助。很抱歉,如果这是一个常见问题解答,但我无法理解搜索的正确关键字。
答案 0 :(得分:0)
与外国旅行者和城市一起创建像travel_cities这样的第三个表是不是更容易,而不是你用表所需的表加入那个表并在那里寻找结果?
答案 1 :(得分:0)
解决方案:
遵循以下架构
第一张表:资本 让我们说两列:cid(主键),名称
第二张表:旅行者 我们说两列:tid(主键),Traveller_Name
现在有一对多的关系,一个旅行者可以旅行/访问一个或多个首都,一个或多个访客可以访问一个资本。
通过创建一个充当引用/映射表的新表,可以实现多对多的关系。让我们说" capital_travellers"
因此,第三个表格将包含以下列
capital_travellers:
id(主键):可选
cid(Capital Table的主键将作为外键使用)
tid(旅行者表的主键将作为外键使用)
现在,当您想要获取记录时,您将查看此表(capital_travellers)。
我希望它有所帮助。
答案 2 :(得分:0)
在多对多关系中,有必要在两个实体之间实现第三个联结表。比方说,我们可以将其命名为旅行。该表使用两个外键,每个实体一个,形成一个复合键。
现在你有3张桌子。一张叫做“旅行者”的桌子,一张叫做“城市”的桌子。和第三个连接表叫做“旅行”。让我们假设旅行者的主要钥匙是travellerId,而城市则是cityId。联结表使用这两个键来形成实体“旅行”的主键。当你向旅行者查询旅行者城市的数据库时,我们会带着旅行的旅行者#0; 031'已经前往它会使用这个联结表并返回cityId's给你。
如果这没有帮助,或者您需要更多说明,我建议您搜索这些条款: