2

我需要创建一个数据库来存储有关游戏角色所在区域以及他们如何到达那里的详细信息。我打算将字符 UUID 存储为 binary(16) 索引,区域名称为 varchar(25),unix 时间为 int;其他领域尚未完全确定。

我还需要存储用户曾经去过的每个地区的全部历史记录以及相同的详细信息。

当角色在区域之间移动时,该系统将同时处理来自多个来源(至少一百个)的传入数据。

大多数查询只想知道与角色有关的事情,但有些人会想知道为给定区域上传的最后一个代理。我打算将此信息存储在单独的表中。

一位同事认为,对我来说,为每个区域使用一张表会更有效,但我很担心,因为我认为通常不会这样做。

所以基本上我想知道在我的情况下是否按照他所说的那样做更有效率,并为每个地区使用单独的表格。

4

2 回答 2

3

我会使用一张表,每个区域都有一张表意味着任何扩展都需要新的表,这反过来意味着更多的编码。每个实体类型使用一个表,您可以通过从数据库中插入或删除行来添加和删除许多区域。

于 2011-06-23T00:45:49.257 回答
0

为每个区域创建一个表可能会更有效,但这会在设计和实现方面引起头疼。

现在,对于每个区域,它必须对其引用的表名进行编码,而不仅仅是使用外键(区域的 ID)。同样,对于您决定稍后添加的每个区域(扩展等),您将需要添加新代码以及新表以与基本相同的操作进行交互。

如果您确定这是一个瓶颈,我只会这样做。在这种规模上进行预优化通常是一个错误。毕竟,采用良好的规范化设计并使其更加特定于领域很容易,但反之则更难。

于 2011-06-23T00:50:37.013 回答