Database 有效地从列排列中选择SQL模式和查询
我正在使用postgresql 9.3+ 我正在设计一个数据库来描述一群人的统计数据。 想象一下,你有150名球员可供挑选,每队5人,以及关于每一个可能的球队组合的数据(每场比赛的点数、比赛长度等)。每个队员可以有不同的位置(如控球后卫、得分后卫、小前锋等) 目前它只包含一个如下所示的表 (p id为玩家id,R为角色) px已排序,可具有约150个值(不连续)Database 有效地从列排列中选择SQL模式和查询,database,postgresql,database-design,database-schema,Database,Postgresql,Database Design,Database Schema,我正在使用postgresql 9.3+ 我正在设计一个数据库来描述一群人的统计数据。 想象一下,你有150名球员可供挑选,每队5人,以及关于每一个可能的球队组合的数据(每场比赛的点数、比赛长度等)。每个队员可以有不同的位置(如控球后卫、得分后卫、小前锋等) 目前它只包含一个如下所示的表 (p id为玩家id,R为角色) px已排序,可具有约150个值(不连续) p1
p1
rx是4个可能值的枚举
id是通过将0..5中x的pxrx连接起来获得的,它是一个字符串,是唯一的键
执行最多的查询将是:
我唯一能想到的就是查找具有(34,A)、(411,D)、(233,A)的所有行。
从id为“%34A%233A%411D%”的表中选择*
我可以用它来做对具有(34,A)、(411,D)、(233,A)
从中选择SUM(数据1)、SUM(数据2)代码>
我可以自己做查找最大化给定数据列的缺失px
但是我没有办法从中选择*。。。按数据限制排序1
找到具有rx=角色的px,它可以最大化数据
要做到这一点,我需要根据给定px=34(但在某些行中p1=34,在其他行中p4=34)的rx对匹配进行分组,并找到每组数据的平均值根据p=34不同角色的数据查找团队的平均绩效
此外,您将如何设计索引?(您的{p1,r1}等是一个重复组)您是对的。我可以将它们放在它们自己的表中,并放置外键而不是组。您认为这对解决之前指定的问题有何帮助?我仍然不知道他们处于什么位置
-------------------------------------------------------------------------------
id | p1 | r1 | p2 | r2 | p3 | r3 | p4 | r4 | p5 | r5 | data collumns |
-------------------------------------------------------------------------------
1A2C5A8D9B | 1 | A | 2 | C | 5 | A | 8 | D | 9 | B | ............. |
p1 < p2 < p3 < p4