我正在创建一个体育统计数据库。有了它,我想编目许多类型的运动类型的比赛/比赛统计。例如,这个数据库可以告诉你卡罗莱纳豹队在09-10赛季(足球)获得多少达阵,或者迈阿密热火队在最后一场比赛(篮球)中有多少次罚球。属性是否可以指定一个表格而不是另一个表格?
我有麻烦叫设计相匹配的更根本的一个表。比赛表有列:(PK match_id)的发挥
- ID(play_date)team_1_performance_id和team_2_performance_id)表中的表现。
性能表保存:
- ID(PK perf_id)
- 团队ID(FK TEAM_ID)
- 而且最重要的是,所有其他属性,如:罢工(*)每打
- 平均冲码(*) 的号码制成的三分球(*)
- %的
(*)的问题是,如何才能让相关的各自的运动性能表?例如,棒球比赛有罢工,但足球和曲棍球不会(我也不会想到任何其他运动)。我不希望我的绩效表有一个罢工列,但它只与部分记录相关。
或者我?也许我的设计应该有所不同呢?你会怎么做呢?
现在,我不知道这是可能的,但我有一个想法是,也许包括在匹配某种性能比较表ID列是指不同的性能表。因此,当我查询比赛的表现时,它会查看特定的表格。这是这个问题的标题来自哪里(一个属性可以指定一个表而不是另一个?)。试想一下,“选择team_1_performance.strikes从匹配INNER JOIN appropriate_performance_table AS team_1_performance WHERE Matches.performance_table_id =‘棒球’”我怎么会指定appropriate_performance_table,如果这甚至可能吗?
另一个想法是为所有运动创建比赛表,比如Rugby_Matches或Football_Matches,然后针对这些运动制定相应的表现表,如Rugby_Perfomances或Football_Performances。这看起来像很多代表有些类似的东西的表格。
如果可以的话,尽量保持你的反应MySQL的具体。
谢谢!
EAV对程序员来说是诱人的......看起来很简单,看起来很灵活......只有4张桌子,你可以存储所有东西。事实上,为什么还有其他表呢?你所有的球员都可以进去,球队也是。事实上,你制作的每个数据库,从现在开始只能容纳4个表格。您只需要一个实体列表,一个属性列表,两个属性之间的映射以及另一个属性来保存每个属性的值。一个统一所有模型的模型。 –