所有我构建一个小型数据库应用程序,我可以使用一些输入最好的方法来创建我的表之间的关系。
我想我已经想通了,但是我一直在盯着它,所以我需要第二组眼睛和意见。
此型号适用于赛车手。我在设置关系的地方卡在分区表上。基本上司机可以分为多个部门。为了解释这一点,我添加了一个DriverDivision表,它基本上是一个查找,允许我将驱动程序映射到多个分区。
您可以从驱动程序的模型中看到,还有一个PointsStanding
和一个RaceResults
表。这与驱动程序关联为1:M。在我磕磕绊绊的地方,我还需要按照分部过滤结果和排名。我是否需要在Division和这两个表之间创建查找表?看看模型我可以通过DriverInfo页面获得所有结果,但我不知道这是否是正确的方法?导航这将总是返回一个完整的对象,所以我可以看到所有结果以及与之关联的驱动程序。我是偏离轨道还是有更好的模型/模式可供选择?当我第一次启动这个模型时,我认为驱动程序将是主要的一点,但感觉就像分区一样。驾驶员必须与分部相关联,分数和结果与驾驶员相关联,但我需要能够按分部查看所有积分和所有积分。
我很感激任何建议或建议。
-Cheers
答案 0 :(得分:1)
首先,DriverDivisionId是什么?我假设您将它用作分区/驱动程序组合的主键,但您可以同时使用DivisionId和DriverId作为主键。
第二,您可以将divisionId添加到积分榜和比赛结果中,然后同时使用driverId和divisionId获取特定分区/赛车组合的结果
编辑:
在思考了一分钟后,我想我会再增加一张桌子,一场比赛'表格将列出所有比赛。那里你需要一个' RaceId'识别种族。然后你可以在那里存储关于这场比赛的所有信息(包括分区),在RaceResults表中你可以获得你的RaceId,DriverId,PositionFinished,PositionStarted,RacerPoints答案 1 :(得分:1)
据我了解你的帖子,一名赛车手参加了一场比赛,每场比赛属于一个师。
一个问题是,一名车手可以属于一个师而不参加该师的任何比赛吗?根据答案,您可能不需要Driver和Division之间的关系。 RaceResult和Divison之间的关系更有意义。
所以你得到类似的东西:
Driver -->> RaceResult <<-- Race
<<-- Division
在我看来,你可以根据过去的RaceResults来计算站立时间。如果这是真的,我根本不会在数据库中存储积分。存储您也可以计算的结果肯定会导致不一致:例如,如果某些更新了比赛结果,而不是更新结果。
最后,您的表结构对于初始设计似乎非常通用。我尝试将其简化为您应用程序第一版所需的简单信息存储。