MySQL表分离几乎相同的数据但不同的用户组

时间:2013-05-28 22:48:46

标签: php mysql database

首先,如果有人提出并回答了类似的问题,我会道歉。我搜索并发现了类似的问题,但没有一个足够接近。

我的问题基本上是在我的特定情况下分离几乎相同数据的表格是否是一个好主意。这些表跟踪两个非常不同的组的数据跟踪数据(单个用户的产品许可数据和企业用户的产品许可数据)。我正在考虑将它们分成两个表,以便用户验证过程运行得更快(特别是对于个人用户,因为记录数量明显较低(例如~500个单独记录与~100,000个企业记录))。最后,在表结构中不明显的用户类型存在显着差异 - 个人用户都具有固定数量的激活,而企业用户可能具有无限激活,并且跟踪的目的更多是激活统计。

我认为分离表格的一个好主意是因为每个表都会更小,从而导致更快的查询(至少我认为它会......)。另一方面,我将不得不进行两次查询以获得分析数据。此外,我可能希望不时更改我正在跟踪的数据,显然,这对于两个重复的表来说更加困难。

我猜测查询时间差异可能微不足道,即使有成千上万的记录?但是,如果他们愿意分享,我希望听到人们对此的看法(主要是关于效率和整体最佳做法)。

提前致谢!

1 个答案:

答案 0 :(得分:1)

在设计数据库结构时,您应该尽可能地尝试normalize您的数据。所以回答你的问题

“在我的特定情况下,将几乎相同数据的表格分开是不是一个好主意。”

如果您正确地规范化数据库,答案是否定的,创建两个具有几乎相同信息的表并不是一个好主意。通过规范化,您应该能够将类似的数据分离到映射表中,这将允许您创建更快速运行的更复杂的查询。

第一个正常形式规范化的一个非常基本的例子是你有一个用户表,在表中你有一个角色列。您没有物理单词“admin”或“member”,而是拥有一个id,该id映射到另一个名为roles的表,其中1 = admin,2 = member。这个想法是存储重复的id更有效,而不是重复像admin和member这样的单词。