database - 带有课程和比赛的事件的数据库模型
问题描述
我目前有用于超跑事件的日历和结果数据库的附加数据模型。我的问题围绕着如何最好地为课程(事件的所有不同距离)和比赛(使用特定课程的事件实例)设置表格和关系。我的模型站点是calendar.ultrarunning.com,尽管我会以不同的方式构建一些功能。
表
事件 关于(通常)重复事件的一般信息 - 一个事件可以有很多课程(一对多) - 一个事件可以有很多比赛(一对多)
COURSES 赛事可以使用的所有路线信息(例如 50 英里、50 公里、100 英里) - 一个路线可以在许多比赛中使用(例如每年的赛事中的 50 英里路线)
比赛在特定日期使用 COURSES 表中的一门课程进行的特定事件实例。- 一场比赛可以有很多(?)课程(这是我有疑问的事情之一!!) - 可能是多对多的课程
结果 特定比赛的结果,包括每个跑步者的时间、位置等。- 一场比赛有很多结果 - (或与课程和比赛相关的中间表,请参阅下面的问题)
RUNNERS 有关参加比赛并获得结果的每个跑步者的信息。- 跑步者可以有很多结果
问题
现在我在想的是如何处理将数据划分为 COURSES 和 RACES 的问题。
- 我可以选择多对多的关系,让每个种族有很多课程。也就是说,在这种情况下,比赛是在特定日期的事件中发生的一切,包括提供的所有不同距离/路线。
- 我可以选择一对多的关系,并在特定日期的事件中为每门课程创建一场比赛。也就是说,如果那一年有很多课程,我必须创建很多比赛,而不是像 #1 那样我只需要一场比赛和很多课程。
- 我更改为完全分层的模型,其中 RACES 是 COURSES 的子级。也就是说,对于每场比赛,我都会选择一个(或多个?)课程,这会自动将比赛与该课程的事件联系起来。
场景 1:在 #1 的情况下,我是否可以创建一个中间表 - 可能包含日期 - 与该特定实例(特定日期的特定课程)的结果相关?在这种情况下,日期可能必须在 RACES 和这个中间表中?或者也许不在比赛中?
场景 2:在 #2 的情况下,我会将每个结果与 RACES 中的一场比赛联系起来,而那场比赛只有一个路线。很容易。
在场景 1 中,优势可能是更容易创建比赛,并且我可以对特定日期的赛事所独有的任何内容进行描述。
在场景 2 中,为一个事件的实例创建 4-5 个不同的比赛会更加复杂,而这些比赛除了日期之外没有任何共同点。
场景 3 使用完全分层的结构很容易理解这些关系,因为每个种族都有一个(或多个?)课程,而这些课程又属于一个事件。结果显然与比赛有关。
显示器
以下是我计划的与课程和比赛相关的展示。一个。所有即将举行的比赛的列表,以 EVENTS 中的事件名称作为标题,但显示该日期从 RACES 到每场比赛的 COURSES 表的距离。湾。活动页面的活动详情下方即将举行和过去的比赛。C。课程的详细信息页面,列出该课程的所有即将到来和过去的比赛。d。事件的结果页面。e. 特定比赛实例的结果页面。F。特定课程的按性别和年龄组排名最高的视图。G。每个距离、表面等的顶级列表(年度和所有时间)。
最后一个问题
哪种方法处理课程、种族和结果之间的关系最能实现这一点?
解决方案
推荐阅读
- c# - 错误:已经有一个打开的 DataReader 与此连接关联,必须先关闭它。
- python - 在 python 上运行复杂的 bash 命令
- reactjs - React Native backgroundSize 等效
- google-api - API 项目无权使用此 API。请确保在 Google Developers Console 中激活了此 API
- php - 如何从包含文件中导入 mysqli 连接?
- python - 为什么非函数可调用对象不绑定到类实例?
- reactjs - 映射数据并创建输入字段,但为什么我可以输入除一个之外的所有字段?
- javascript - 铬画布上悲伤的脸
- python - Keras深度学习准确率100%的问题
- go - 为什么 GDB 显示大地图的所有零值