Database design 简单的数据库设计对于很多用户来说已经足够好了
我正在设计一款赛车游戏。每个用户最多可以拥有100辆车,其中每辆车的数据存储在我的车表中的一个记录中。表中的字段包括:Database design 简单的数据库设计对于很多用户来说已经足够好了,database-design,Database Design,我正在设计一款赛车游戏。每个用户最多可以拥有100辆车,其中每辆车的数据存储在我的车表中的一个记录中。表中的字段包括: <car_id, user_id, top_speed, colour, handling, acceleration ...> -其中,用户id是映射到车主的外键 我的问题:这个简单的设计可以将我所有用户的汽车存储在一个表中吗?假设该应用程序成功,拥有约10000名用户,每人拥有100辆汽车。在我的汽车表中有1000000条记录。这是性能方面的问题吗?我可以
<car_id, user_id, top_speed, colour, handling, acceleration ...>
-其中,用户id是映射到车主的外键
我的问题:这个简单的设计可以将我所有用户的汽车存储在一个表中吗?假设该应用程序成功,拥有约10000名用户,每人拥有100辆汽车。在我的汽车表中有1000000条记录。这是性能方面的问题吗?我可以通过数据库的设计来提高性能吗
最后,我计划使用MySQL作为我的DBMS 如果您计划按用户进行大量汽车查询,请为用户id添加索引。除此之外,没有更清晰的方法来优化此设计。将其放在同一张表中 除非你有一个朋友,否则就让你的关系 …以及生成的自然键
{user\u id,car\u no}
上的car
表。通过这种方式,属于同一用户的汽车将被存储在数据库中物理上靠近,并且可以非常快速地回答诸如“给我给定用户的汽车”之类的查询
P>以上,考虑你是否真的需要1:N关系(而不是M:N)。用户是否会分享汽车(或者至少分享汽车的一些“共同方面”)是的。没关系。只要确保你有好的索引,我会给它添加索引。假设你有id为
0
到100
的汽车。车号为#5的每名球员的规格是否相同?因为在这种情况下,您可以为所有用户创建一个cars表,并从用户表链接到car表。@JakeParis,这是什么意思?在Car表中找到的每条记录都有一个主键,用Car_id表示。@JakeParis不,我计划通过调整使它们可以自定义,等等。如果你有相同规格的车,你实际上可以有一个映射表。他说用户将“拥有”这辆车。如果用户没有编辑汽车规格,我只会使用映射/联接表。如果用户编辑汽车,他们将被分配到具有这些规格的记录。为什么要复制数据?那么@njk,你是说创建一个包含每辆车可能拥有的所有规格组合的表?@Goaler444这当然是一个可行的选择;如果它小于所有用户的单个规格,并且不复制数据。