我需要创建一个数据库来存储有关游戏角色所处区域以及它们如何到达的详细信息。 我打算将字符UUID存储为二进制(16)索引,区域名称存储为varchar(25),将unix时间存储为int;其他领域尚未完全确定。
我还需要存储用户曾经去过的每个地区的整个历史记录以及相同的细节。
当角色在区域之间移动时,该系统将同时处理来自多个来源的传入数据(至少一百个)。
大多数查询只想知道与角色有关的事情,但有些人想知道为给定区域上传的最后代理。我打算将这些信息存储在单独的表中。
一位员工认为,对每个地区使用一张桌子会更有效率,但我很担心,因为我看不到这种情况。
所以基本上我想知道的是,在我的情况下是否更有效率,因为他说并为每个地区使用单独的表。
答案 0 :(得分:3)
我会使用一个表,每个区域有一个表示轨道上的任何扩展需要新表,这反过来意味着更多的编码。通过每个实体类型一个表,您可以通过插入或删除数据库中的行来允许添加和删除许多区域。
答案 1 :(得分:0)
为每个地区创建一个表格可能会更有效率,但这会在设计和实施方面引起头痛。
现在,对于每个区域,它必须对它引用的表名进行编码,而不是仅使用外键(区域的ID)。同样,对于您决定稍后添加的每个区域(扩展等),您将需要添加新代码以及新表以与基本相同的操作进行交互。
如果你确定它是一个瓶颈,我只会这样做。在这种规模上进行预优化通常是一个错误。毕竟,很容易采用良好的,标准化的设计,并使其更具有针对性的领域,但反过来却更难。