我正在开展一个项目,人们每天都会选择某些时段。然后我将处于同一位置的人相互匹配。我正在使用一个单独的表来实现这一点。我目前使用的设计是
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 小时的行)
- 当我在数据库中查询同一组中的所有用户时 槽位,然后是任何时间在该槽位的所有用户 过去也会出现(主要缺陷)
这个设计肯定有缺陷,但我无法想出一个好的设计来实现该功能。我是数据库设计的菜鸟,这是我第一次必须实现一个不平凡的数据库设计。
PS:我使用 django 1.6.5 和 mysql。
最佳答案
您的查询是什么样的?
如果您只想要今天创建数据库条目的人员,您可以执行类似的操作
from datetime import datetime
today = datetime.today()
today = datetime(today.year, today.month, today.day)
然后您可以根据此进行过滤,例如
your_query.filter(created__gte = today)
至于数据库的大小 - 如果这对您来说确实是一个问题,您可以实现一个归档系统。也许是一个每天运行一次的 cron 作业,并将旧条目写入 .csv 文件或单独的数据库或其他东西。
关于python - 在数据库中实现匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24478711/