0
我正在开发一个项目,每天人们选择某些插槽。然后我匹配那些在同一个位置上的人。我正在使用一个单独的表来实现这一点。我使用目前的设计是在数据库中实现匹配
user_id (FK to user table)
created
updated
slotno (int)
等效Django模型
class Slots(models.Model):
user_id = models.ForeignKey(User, related_name='user_id')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
slotno = models.IntegerField(blank=False, null=False)
问题是
- 该表将随着时间变得非常大,导致 提高SQL的复杂性查询(一种可能的解决方案可以是 来设置检查所有行的时间戳的作业,并且 删除行超过24小时)
- 当我查询数据库中所有处于同一 插槽中的用户时,过去任何时候在 之内的所有用户也将显示(MAJOR FLAW)
这个设计绝对有缺陷,但我无法想出一个好的设计来实现该功能。我是数据库设计的一名不起眼的人,这是我第一次实施一个不平凡的数据库设计。
PS:我正在使用django 1.6.5和mysql。
有多大? MySQL支持在日期范围上进行分区,即使在数以亿计的行上也可以实现极其高效的查询。或者,您可以每天,每周,每月将数据归档,具体取决于您的使用情况。你能举出一些预期用例/查询的例子吗? –