我对此很新,所以你可能不得不忍受我。我正在开发一个有关于田径运动排名的网站的数据库,我很好奇有多少桌子是最有效的方法。
我目前有两张桌子,一张叫做“运动员”的桌子,里面有我所有跑步者的详细信息(可能约600人/记录),其中包含以下字段:
mid(会员ID - 主键)
名字
姓氏
性别
生日
国籍
还有第二张表'结果',它包含了所有的表演,并且有以下几个字段:
中期
eid(事件id - 主键)
EVENTDATE
eventcategory(道路,田径,田地等)
事件描述(100米,200米,400米等)
小时
分钟
秒
距离
点
位置
第二张表中已有大约2000张唱片,可能会随着时间的推移翻两番,主要是因为有大约30个赛道赛事,10场赛道,10道路,越野赛道,中继站,多项赛事等,如果有600个赛道我的第一张桌子上的运动员,相当于我的第二张桌子上的大量记录。
所以我想知道的是,将多个表分隔为田径,田野,越野等会更清洁/更有效吗?
我想使用数据库根据性能对人们的结果进行排序。如果您想更好地了解我想要效仿的内容,请查看此网站http://thepowerof10.info
答案 0 :(得分:1)
更改架构不会更改结果数。即使您将场地分成一个单独的桌子,每个活动的每个参与者仍然会有一个结果。
拥有单独的场地表的潜在好处是更好的正常化。跑步者可以获得许多结果,并且给定的场地在给定日期可以具有许多结果。您不必在每个结果记录中重复场地信息。
您需要关注索引。每个表都必须有一个主键。在选择时,为WHERE子句中使用的列添加其他索引。
这是一个discussion about normalization以及它对你意味着什么。
PS - 成千上万的记录不会成为问题。大型数据库大约为千兆或万亿字节。
答案 1 :(得分:0)
我的想法 -
不要将事件表分成每种类型(轨道,字段等)的单独表格。如果数据全部存在于同一个表中,您将更容易查询数据。
否则,你的两张桌子看起来很好 - 这是一个好的开始。