我正在为客户创建一个划船报告和统计系统,我现在的结构类似于以下内容:
-----------------------------------------------------------------------------
| ID | Team | Coaches | Rowers | Event | Position | Time |
-----------------------------------------------------------------------------
| 18 | TeamName | CoachName1 | RowerName1 | EventName | 1 | 01:32:34 |
| | | CoachName2 | RowerName2 | | | |
| | | | RowerName3 | | | |
| | | | RowerName4 | | | |
-----------------------------------------------------------------------------
这是一个示例行数据,但我想将其扩展为Rowers表和Coaches表等,但我不知道如何最好将其链接回Entries表,这就是这个
有人有任何可以与我分享的智慧之词吗?
更新
一支球队可以拥有任意数量的教练和划船者,一支Rower可以在很多球队(A队,B队,C队等),一支球队可以有很多教练。
答案 0 :(得分:2)
我会为球队,教练员,赛艇运动员(如果有多种类型的运动可能需要扩展到运动员)和活动分别使用表格。
TeamID
CoachID
RowerID
的EventID TeamID RowerID
还有很多其他问题可以进一步定义关系,例如:什么定义了条目(事件)?是一套赛艇运动员和一个教练PER事件吗?每个赛事每组赛艇有多名教练?有团队吗?组成团队的原因是什么?
我会问这样的问题......
答案 1 :(得分:1)
一种链接表?然后,我如何将多个赛艇手和教练映射到一个团队?
这是我的建议(基于Optimal Solutions' answer):
<强>团队强>
TeamID
TeamName
<强>长途汽车强>
CoachID
CoachName
<强>赛艇强>
RowerID
RowerName
<强>事件强>
事件ID
位置
时间
CoachTeamLink (Coachs
和Teams
之间的链接)
TeamID
CoachID
RowerTeamLink (Rowers
和Teams
之间的链接)
TeamID
RowerID
EventTeamLink (Events
和Teams
之间的链接)
TeamID
EventID
EventCoachLink (Events
和Coachs
之间的链接)
事件ID
CoachID
EventRowerLink (Events
和Rowers
之间的链接)
事件ID
RowerID
答案 2 :(得分:0)
你说你发布的是“条目表”,但这个表格没有多大意义,最不是(一行,没有双关语)=(一个事实或事物)。
表中的一行是(NULL,NULL,NULL,RowerName3,NULL,NULL,NULL)。那是什么意思?教练CoachName2是什么?等等。
或者这可能是您的条目表的“一行”?如果是这样,那么它不是一个好的SQL表,因为你在一个行 - 列交集中有行(例如)列表,而“list-of-rowers”不是数据类型的好选择。
如果只查看一些数据,则无法说明如何规范化数据库。您需要知道数据在其建模的业务中的含义和代表。
那就是说,我觉得你至少需要单独的表格
队 教练 赛艇 事件
然后你需要代表业务场景的各个方面,例如“一个划船者只属于一个团队”,“一个团队至少有一个教练,没有教练教练多个团队。”
我不知道条目的内容是什么,但也许你需要一个条目表。也许如果我知道划船会更有意义。
答案 3 :(得分:0)
我会有以下表格:
团队:ID,TeamName 教练:ID,CoachName,TeamID Rower:ID,RowerName,TeamID
然后您的事件表将填充如下:
事件:ID,TeamID,CoachID,RowerID,EventName,位置,时间
如果要在查询中显示反规范化数据,可以构建如下内容:
SELECT E.ID, T.TeamName, C.CoachName, R.RowerName, E.EventName, E.Position, E.Time
FROM Event E
INNER JOIN Team T
ON E.TeamID = T.ID
INNER JOIN Coach C
ON E.CoachID = C.ID
INNER JOIN Rower R
ON E.RowerID = R.ID
答案 4 :(得分:0)
我会尝试这样的事情::
teams id name rowers id name team_id REFERENCES TEAMS (id) coaches id name team_id REFERENCES teams (id) events id name starting_time length event_teams event_id references events (id) team_id references teams (id) position