我正处于建立赛车游戏的设计阶段。每个用户最多可以拥有100辆汽车,每辆汽车的数据都存储在我的汽车表中的记录中。表中的字段包括:
<car_id, user_id, top_speed, colour, handling, acceleration ...>
- user_id是映射到汽车所有者的外键。
我的问题:这个简单的设计是否可以将我所有用户的汽车存储在一个表中?让我们说该应用程序是成功的,有大约10,000个用户,每个拥有100辆汽车。这将是我的车牌表中的1,000,000条记录。这是性能方面的问题吗?我可以通过数据库的设计来帮助提高性能吗?
最后,我打算使用MySQL作为我的DBMS。
答案 0 :(得分:1)
将其保存在同一张表中。
除非您有specific reason for a surrogate key,否则请将关系标识为......
...以及cluster生成的自然键car
上的{user_id, car_no}
表。这样,属于同一用户的汽车将在数据库中一起存储物理关闭,并且可以非常快速地回答诸如“给我给定用户的汽车”的查询。
最重要的是,考虑一下你是否真的需要1:N关系(而不是M:N)。用户是否会共享汽车(或者至少是汽车的“常见方面”)?
答案 1 :(得分:0)
如果您打算按用户进行大量汽车查询,请向user_id添加索引。除此之外,没有更清晰的方法来优化这种设计。