-1

我正处于构建赛车游戏的设计阶段。每个用户最多可以拥有 100 辆汽车,其中每辆汽车的数据都存储在我的汽车表中的记录中。表中的字段包括:

<car_id, user_id, top_speed, colour, handling, acceleration ...>

- 其中 user_id 是映射到车主的外键。

我的问题:这个简单的设计可以将我所有用户的汽车存储在一个表中吗?假设该应用程序很成功,大约有 10,000 名用户,每个用户拥有 100 辆汽车。那将是我的汽车表中的 1,000,000 条记录。是性能方面的问题吗?我可以通过数据库的设计来提高性能吗?

最后,我计划使用 MySQL 作为我的 DBMS。

4

2 回答 2

1

把它放在同一张桌子上。

除非您对代理键有特定原因,否则请确定关系...

在此处输入图像描述

...并将表聚集car生成的 natural key 上{user_id, car_no}。这样,属于同一用户的汽车将在物理上紧密地存储在数据库中,并且可以非常快速地回答诸如“给我给定用户的汽车”之类的查询。


最重要的是,考虑您是否真的需要 1:N 关系(而不是 M:N)。用户是否会共享汽车(或至少汽车的某些“共同点”)?

于 2013-01-31T19:11:23.297 回答
0

如果您计划按用户进行大量汽车查找,请向 user_id 添加索引。除此之外,没有更清晰的方法可以优化此设计。

于 2013-01-31T18:44:07.703 回答