MySQL中每个区域的表

时间:2012-12-07 10:25:12

标签: mysql sql database

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

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

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

修改 我应该考虑按region_id划分表格吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

对于地区,尝试分析记录的使用方式。

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

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