高尔夫SQL问题

jer*_*iuh 3 sql database-design

我想通过说我相信正确的方法来处理这个问题可能是为了重构数据库表,但我想这样做

我在一个客户工作,他正在购买美国大部分高尔夫球场的数据库.由于他将定期收到卖家的更新,我保留了已发送的结构.(令人讨厌的是:数据的骗子卖家承诺在他"必须改变现有记录的ID"时告诉我们.什么?你在销售数据然后改变之后的唯一ID?)

所以我有一张T恤表(一组孔作为序列播放); 一张圆桌(一个发球台)和一张洞(每个洞的个人得分).

在发球台中,这些小球正在存储par(目标分数),如场名Par_ 1,Par_2,Par_3至Par_18,其中INT值.因此,孔号是字段名称的一部分,并且根本不存储为值.

现在让我们说我需要查找你在特定回合中等于3的洞的所有得分的平均值.或者你的所有回合.

就像是

SELECT (SUM(holesPlayed.score) / COUNT(holesPlayed.score))
FROM holesPlayed, tees
WHERE
holesPlayed.round_id = 9
AND tees.CourseTeeNumber = 'UT-94-1'
AND tees.Par_x = 3;
Run Code Online (Sandbox Code Playgroud)

所以我可以很容易地通过洞找到分数,但是因为洞数被嵌入到这样的字段名中,所以查找一个洞的标准将涉及一场噩梦.

我应该开始写一些东西来将tee和hole导出到他们自己的桌子吗?

我错过了一些令我惊讶的SQL功夫吗?

你的建议是什么?

Asa*_*aph 14

我建议编写一个实用程序,将数据从供应商的格式转换为您的首选格式.您的实用程序将负责将PAR_18等解析为更易于管理的索引.当您从供应商处获得更新数据时,可以通过实用程序运行它以生成首选格式的更新数据.

  • ...并考虑在更正的模型中转售数据] :) (4认同)
  • 如果您拥有的数据不是可用的格式,并且您预见到的数据格式不正确,请编写转换实用程序. (2认同)