1

有四个地区的记录总数超过一百万。我应该创建一个包含区域列的表还是为每个区域创建一个表并将它们组合起来以获得最高排名?

如果我结合所有四个区域,我的列都不会是唯一的,所以我还需要id为我的主键添加一个列。否则,name, accountId&characterId将是候选键,或者我应该只是添加一id列。

Table:
----------------------------------------------------------------
| name | accountId | iconId | level | characterId | updateDate |
----------------------------------------------------------------

编辑: 我应该考虑按以下方式对表进行分区region_id吗?

4

2 回答 2

1

因为所有记录都与特定区域相关,所以 3NF(例如所有区域)中包含 regionId 和其他属性的单个数据库表应该可以工作。

于 2012-12-07T10:36:30.960 回答
0

与数据库设计一样,正确答案通常是“取决于”。

首先,(恕我直言)一个好的主键应该属于数据库,而不是用户:)
所以,如果accountIdcharacterId是用户可编辑的或显眼地显示给用户,它们不应该用作表的主键(s) 无论如何。使用name(或任何其他用户生成的字符串)作为密钥只是自找麻烦。

至于地区,试着预测这些记录将如何使用。

  • 大多数查询将仅使用单个区域,还是大多数查询将跨区域使用数据?
  • 不同地区的模式是否有可能出现分歧?
  • 相似的数据会有不同的使用场景吗?(例如不同地区的不同电话号码模式)

最重要的是,这两种方法都行得通,让您的数据告诉您哪种方法更易于管理。

于 2012-12-07T11:01:57.203 回答