【发布时间】:2013-11-17 01:13:28
【问题描述】:
在我的数据库中,我需要以下关系:
- 比赛
- 比赛参与者(Tpart)
- 将用户与锦标赛相关联
- 圆形
- 这是单场比赛
- 孔
- 将 Tpart 与一轮相关联
- 还有一个分数
这是我当前的持久实体:
Tournament
name Text
urlName Text
location GolfCourseId
startDate Day
endDate Day Maybe
UniqueTName name
UniqueTUrlName urlName
Tpart
tournament TournamentId
userId UserId
deriving Show
deriving Eq
Round
tourn TournamentId
name Text
UniqueRound tourn name
deriving Show
Hole
round RoundId
part TpartId
score Int
deriving Show
考虑到我需要做的查询,我不知道这是否是最好的结构。 我需要
-
获取每个 Tpart 一轮的总分
这将通过将与特定回合和 Tpart 相关的所有洞的得分相加来完成Part | round 1 | round 2 | ... p1 | 56 | 54 p2 | 60 | 57 -
获取与一轮相关的所有孔和零件
Part | hole 1 | hole 2| ... p1 | 3 | 5 p2 | 5 | 6
要获取第一个表中的数据,需要将每个用户的所有球洞得分相加。这是一种有效的方法吗?还是有另一个实体RndScore 会更好,像这样:
RndScore
rnd RoundId
tpart TpartId
score Int
每次更新孔实体时都可以更新此实体。不过,这些解决方案中的任何一个似乎都相当强大。
【问题讨论】:
标签: postgresql database-design relational-database yesod