首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL表设计帮助

MYSQL表设计帮助
EN

Stack Overflow用户
提问于 2011-01-23 02:40:48
回答 5查看 82关注 0票数 0

我有一个名为team (id,name,...)的表我有一个名为divisions (id,name,......)的表。我希望每个团队的teams.id都在一个部门中,团队可以在多个部门中。我该如何设置?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-23 02:52:15

假设您的表如下所示

代码语言:javascript
复制
teams
-teamId
-teamName

divisions
-divisionId
-divisionName

我想你要找的是一个多对多的链接表。

代码语言:javascript
复制
membership
-divisionId
-teamId

这将允许您查找一个分区中的所有团队

代码语言:javascript
复制
select teamId
from team t
join membership m
  on m.teamId = t.teamId
where m.divisionId = 'theIdYouWant'

它还允许您想属于一个部门的任意多个团队,以及您想包含相同团队的任意多个部门。这是一个多对多的关系表。

票数 2
EN

Stack Overflow用户

发布于 2011-01-23 02:46:12

这是多对多关系的标准方法:创建一个单独的表teams_divisons (或divisions_teams),其中包含两个列team_id和division_id。

票数 1
EN

Stack Overflow用户

发布于 2011-01-23 02:45:19

您可以创建一个所谓的关系表。它是Teams表和Divisions表之间的中间表。然后我们说在Teams表(tbl_teams)和Divisions表(tbl_divisions)之间存在多对多关系。您可以在一个部门中有多个团队,在多个部门中有一个团队,或者在多个部门中有多个团队。

tbl_teams_divisions_rel

INT主键ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT

  • Team_ID INT NOT NULL

  • Division_ID INT NOT NULL

然后在tbl_teams_divisions_rel.Team_ID和tbl_team.ID之间建立关系,然后在tbl_teams_divisions_rel.Division_ID和tbl_divisions.ID之间建立关系

如果您提出如何列出ID为13的特定部门中的所有团队的问题,您将执行以下操作:

代码语言:javascript
复制
SELECT tbl_teams.*
FROM
    tbl_teams
    INNER JOIN tbl_teams_divisions_rel ON tbl_teams_divisions_rel.Team_ID = tbl_teams.ID
WHERE tbl_teams_divisions_rel.Division_ID = 13

希望它能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4769776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档