我想将图形数据库用于跟踪给定运动(例如排球)的球员、比赛、联赛的 Web 应用程序。下面是我想出的第一级模型。我想支持此 Web 应用程序的以下统计信息
播放器
- 显示一名球员参加的所有联赛。
- 显示每个联赛中一名球员参加的所有比赛。
- 球员的当前球队和他以前的球队。
- 球员担任队长的次数以及他担任队长的所有联赛。
团队
- 一支球队参加的所有联赛。
- 球队有多少次是赢家或亚军。
注意:右键单击图像并在新选项卡中打开它以查看原始图像。
您的模型看起来不错,但是在查看了您的用例之后,我有一些问题/建议:
我将在 Cypher 中给出这些,因为它最容易以这种格式显示。
播放器
显示一名球员参加的所有联赛。
START player=node:Player('indexForPlayer')
MATCH player-[PLAYED]->match-[PART_OF]->league
RETURN league
显示每个联赛中一名球员参加的所有比赛。
START player=node:Player('indexForPlayer')
MATCH player-[PLAYED]->match-[PART_OF]->league
RETURN match, collect(league)
球员的当前球队和他以前的球队。
START player=node:Player('indexForPlayer')
MATCH player-[BELONGED_TO]->team
RETURN team
球员担任队长的次数以及他担任队长的所有联赛。
How do you determine if they were a captain of a league?
团队
团队获得胜利者或跑步者的次数。
你可能想把它当作一种关系,比如(match)-[WINNER]->(team)
这样来找出你的团队有多少胜利,你所要做的就是计算这种WINNER
关系。
将属性添加到Match
播放日期的节点。我对运动不熟悉,但是如果他们可以在一年内交换球队,那么 Year 可能还不够,但是Neo4j
实际上并没有很好的处理时间的方法,除了 'seconds since epoch ` 类型系统。