具有课程和种族的事件的数据库模型

时间:2018-10-06 07:58:58

标签: database database-design model

我目前具有用于超运行事件的日历和结果数据库的附加数据模型。我的问题围绕着如何最佳地设置课程表和关系(事件的所有不同距离)和比赛(使用特定课程的事件实例)的关系。我的模型站点是calendar.ultrarunning.com,尽管我将以不同的方式构建某些功能。enter image description here

表格

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

课程 活动可以使用的有关课程的所有信息(例如50英里,50公里,100英里) -在许多比赛中都可以使用一门课程(例如,每年在某项赛事中使用50英里的课程)

赛车 使用COURSES表中的课程之一,在特定日期的事件的特定实例。 -一场比赛可以开设许多(?)课程(这是我有疑问的事情之一!!)-选修课可以进行多对多

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

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

问题

现在我正在考虑的是如何处理将数据分为课程和种族。

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

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

方案2 : 在第二名的情况下,我会将每个结果与RACES中的一场比赛相关联,而该比赛只有一个方向。很容易。

在场景1中,优点可能是更容易创建种族,并且我可以针对该特定日期的事件的独特之处进行描述。

在场景2中,为一个事件的实例创建4-5个不同的种族会更加复杂,这些种族除了日期外没有其他共同点。

方案3 有了完全分层的结构,就很容易理解这种关系,因为每个种族都有一个(或许多?)路线,而这些路线又属于一个事件。结果显然与比赛有关。

显示

以下是我计划中与课程和种族有关的显示。   一种。所有即将举行的比赛的列表,以“活动”中的事件名称为标题,但显示该日期与RACES的每项比赛到“课程”表的距离。   b。活动页面活动详细信息下方的即将进行的比赛和过去的比赛。   C。课程的详细信息页面,列出该课程的所有即将进行的比赛和过去的比赛。   d。事件的结果页面。   e。特定种族实例的结果页面。   F。在特定课程中按性别和年龄段显示效果最佳的视图。   G。每个距离,表面等的顶部列表(年度和所有时间)。

最终问题

哪种方法最好地实现课程,种族和结果之间的关系?

0 个答案:

没有答案