Graph 体育赛事图形设计(neo4j)

Graph 体育赛事图形设计(neo4j),graph,neo4j,Graph,Neo4j,我想为一个web应用程序使用一个图形数据库,该应用程序跟踪给定运动(如排球)的运动员、比赛和联盟。下面是我提出的第一级模型。我想支持此web应用程序的以下统计信息 玩家 显示一名球员参加的所有联赛 显示每个联赛中一名球员进行的所有比赛 球员的当前球队和他以前的球队 有多少次这位球员是队长,以及他担任队长的所有联赛 团队 由一支球队参加的所有联赛 该队有多少次是胜利者或赛跑者 注意:右键单击图像并在新选项卡中打开它以查看原始图像。 您的模型看起来不错,但是在查看了您的用例之后,我有一些问题/建议:

我想为一个web应用程序使用一个图形数据库,该应用程序跟踪给定运动(如排球)的运动员、比赛和联盟。下面是我提出的第一级模型。我想支持此web应用程序的以下统计信息

玩家

  • 显示一名球员参加的所有联赛
  • 显示每个联赛中一名球员进行的所有比赛
  • 球员的当前球队和他以前的球队
  • 有多少次这位球员是队长,以及他担任队长的所有联赛
  • 团队

  • 由一支球队参加的所有联赛
  • 该队有多少次是胜利者或赛跑者
  • 注意:右键单击图像并在新选项卡中打开它以查看原始图像。


    您的模型看起来不错,但是在查看了您的用例之后,我有一些问题/建议:

    查询 我会给这些在密码,因为它是最容易显示在这个格式

    玩家

    显示一名球员参加的所有联赛。

    显示每个联赛中一名球员的所有比赛。

    球员的当前球队和以前的球队。

    该球员担任队长的次数以及他担任队长的所有联赛。

    团队 该队有多少次成为赢家或跑步者。 您可能希望将其作为一种关系,例如
    (比赛)-[WINNER]->(团队)
    ,通过这种方式可以了解您的团队赢得了多少场胜利,您所要做的就是计算
    赢家
    关系

    数据模型
    将播放日期的属性添加到
    Match
    节点。我对体育不熟悉,但如果他们能在一年内交换球队,一年可能不够,然而
    Neo4j
    除了“从纪元算起的秒”类型的系统之外,并没有一个处理时间的好方法。

    +1。由于比赛是由球队进行的,您能否将球员-[PLAYED]->match的引用更改为包含/成为球队-[PLAYED]->match?-这是一个很好的观察。但是我必须这样做的原因是,一个球队总是有缓冲球员,例如,在给定的排球比赛中,只有6名球员可以打,但球队中总共可以有10-12名球员。这个模型可以让我捕捉到比赛6,从而为以下问题提供更准确的结果:显示每个联赛中一名球员的所有比赛。你认为我可以用另一个模型来回答这个问题吗?如果你把比赛和球员联系起来,就像L1-01比赛一样,不可能说出确切的球队,因为“约翰”是野马队和猎鹰队的球员,所以他可能是为正在进行的比赛的任何一支球队踢球一名球员在每个联赛中只能属于一支球队。这就是为什么拥有“年内”财产的人有资格拥有“年内”财产的原因。欢迎在此基础上进行任何即兴创作。你知道如何表现一名球员每年都为同一支球队效力的事实吗?例如,约翰在2011年、2012年和2013年属于野马队?我不能在同一节点之间多次使用相同类型的关系,对吗?不,在同一节点之间可以多次使用相同类型的关系。
    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?