gpt4 book ai didi

mysql - 通过数据透视表建立一对一关系

转载 作者:行者123 更新时间:2023-11-29 12:53:06 25 4
gpt4 key购买 nike

好吧,我正在构建一个足球网站,当用户注册时,他们会得到一支球队和 6 个不同的体育场可供选择。所以我有一个团队表:

----------------------------------------
| user_id | team_name | stadium_id |
----------------------------------------
| 1 | barca | 2 |
----------------------------------------

然后我决定让体育场成为自己的 table

----------------------------------------------
| id | name | capacity | price |
----------------------------------------------
| 1 | Maracana | 50000 | 90000 |
------------------------------------------------
| 2 | Morombi | 80000 | 150000 |
------------------------------------------------

要获取团队竞技场名称,我必须从团队表中获取 arena_id,然后使用 id 获取竞技场名称。现在我认为这不是很有效,所以我考虑了一下,我认为最好的解决方案是添加一个数据透视表,如下所示:

<小时/>
| id  |    arena_id    |    team_id   | 
---------------------- ----------------
| 1 | 2 | 1
--------------------------------------|
| 2 | 1 | 2
--------------------------------------|

我通常认为数据透视表是多对多关系的表,而不是一对一关系的表。在这种情况下使用数据透视表是最好的解决方案还是我应该保留当前使用的实现?

最佳答案

您不需要为此使用数据透视表。它可以是一对一或一对多关系。如果每个用户/团队仅与一个体育场相关(任何体育场都不能被两支团队使用),则这是一对一的。在一对多关系中,多个团队/用户可以使用同一个体育场,如果您有数千名用户并且开始用完体育场,这可能是必要的。

一个JOIN statement在这里将是高效且充分的。

SELECT s.name, t.team_name   -- Get the team's and stadium's name
FROM team t -- From the team table
JOIN stadium s -- Join it with the stadium table
ON (t.stadium_id = s.id) -- Join ON the stadium_id

这将返回每个注册球队的球队名称和体育场名称。

您可能需要调整查询,但在阅读我上面链接的 MySQL 引用资料后,您应该能够掌握它。

关于mysql - 通过数据透视表建立一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com