首页 > 解决方案 > 带有课程和比赛的事件的数据库模型

问题描述

我目前有用于超跑事件的日历和结果数据库的附加数据模型。我的问题围绕着如何最好地为课程(事件的所有不同距离)和比赛(使用特定课程的事件实例)设置表格和关系。我的模型站点是calendar.ultrarunning.com,尽管我会以不同的方式构建一些功能。在此处输入图像描述

事件 关于(通常)重复事件的一般信息 - 一个事件可以有很多课程(一对多) - 一个事件可以有很多比赛(一对多)

COURSES 赛事可以使用的所有路线信息(例如 50 英里、50 公里、100 英里) - 一个路线可以在许多比赛中使用(例如每年的赛事中的 50 英里路线)

比赛在特定日期使用 COURSES 表中的一门课程进行的特定事件实例- 一场比赛可以有很多(?)课程(这是我有疑问的事情之一!!) - 可能是多对多的课程

结果 特定比赛的结果,包括每个跑步者的时间、位置等。- 一场比赛有很多结果 - (或与课程和比赛相关的中间表,请参阅下面的问题)

RUNNERS 有关参加比赛并获得结果的每个跑步者的信息。- 跑步者可以有很多结果

问题

现在我在想的是如何处理将数据划分为 COURSES 和 RACES 的问题。

  1. 我可以选择多对多的关系,让每个种族有很多课程。也就是说,在这种情况下,比赛是在特定日期的事件中发生的一切,包括提供的所有不同距离/路线。
  2. 我可以选择一对多的关系,并在特定日期的事件中为每门课程创建一场比赛。也就是说,如果那一年有很多课程,我必须创建很多比赛,而不是像 #1 那样我只需要一场比赛和很多课程。
  3. 我更改为完全分层的模型,其中 RACES 是 COURSES 的子级。也就是说,对于每场比赛,我都会选择一个(或多个?)课程,这会自动将比赛与该课程的事件联系起来。

场景 1:在 #1 的情况下,我是否可以创建一个中间表 - 可能包含日期 - 与该特定实例(特定日期的特定课程)的结果相关?在这种情况下,日期可能必须在 RACES 和这个中间表中?或者也许不在比赛中?

场景 2:在 #2 的情况下,我会将每个结果与 RACES 中的一场比赛联系起来,而那场比赛只有一个路线。很容易。

在场景 1 中,优势可能是更容易创建比赛,并且我可以对特定日期的赛事所独有的任何内容进行描述。

在场景 2 中,为一个事件的实例创建 4-5 个不同的比赛会更加复杂,而这些比赛除了日期之外没有任何共同点。

场景 3 使用完全分层的结构很容易理解这些关系,因为每个种族都有一个(或多个?)课程,而这些课程又属于一个事件。结果显然与比赛有关。

显示器

以下是我计划的与课程和比赛相关的展示。一个。所有即将举行的比赛的列表,以 EVENTS 中的事件名称作为标题,但显示该日期从 RACES 到每场比赛的 COURSES 表的距离。湾。活动页面的活动详情下方即将举行和过去的比赛。C。课程的详细信息页面,列出该课程的所有即将到来和过去的比赛。d。事件的结果页面。e. 特定比赛实例的结果页面。F。特定课程的按性别和年龄组排名最高的视图。G。每个距离、表面等的顶级列表(年度和所有时间)。

最后一个问题

哪种方法处理课程、种族和结果之间的关系最能实现这一点?

标签: databasedatabase-designmodel

解决方案


推荐阅读