【发布时间】:2014-06-29 17:55:53
【问题描述】:
我正在开展一个项目,人们每天都会选择特定的时段。然后我将位于同一位置的人相互匹配。我正在使用一个单独的表来实现这一点。我目前使用的设计是
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 支持对日期范围进行分区,即使在数亿行上也可以进行非常高效的查询。或者,您总是可以每天、每周、每月归档数据,具体取决于您的使用情况。您能否举一些预期的用例/查询示例。
标签: python mysql sql database django