用于体育比赛的图形设计(用于neo4j)

时间:2013-05-07 20:39:18

标签: graph neo4j

我想使用图形数据库来存储一个网络应用程序,该应用程序可以跟踪给定运动的排球,比赛和联赛。下面是我提出的第一级模型。我想支持此Web应用程序的以下统计信息

播放器

  1. 显示玩家所玩的所有联赛。
  2. 显示每个联赛中球员的所有比赛。
  3. 玩家现有团队及其之前的团队。
  4. 该队员是队长的多少次以及他是队长的所有联赛。
    1. 球队所有联赛。
    2. 团队成为胜利者或跑步者的次数。
    3. 注:右键单击图像并在新标签中将其打开以查看原始图像。

      enter image description here

1 个答案:

答案 0 :(得分:1)

你的模型看起来不错,但是在查看你的用例后,我有几个问题/建议:

查询

我会在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节点添加属性以查看播放日期。我对体育不熟悉,但是如果他们可以在一年内交换球队,那么年份可能还不够,但是Neo4j除了“自纪元以来的秒数”以外,并没有真正有一个很好的方法来处理时间。系统。