mysql - 数据库设计: Value(s) per user per day

标签 mysql database

我正在建立一个系统,我希望每天为每个用户(1000+)添加一组值。

假设: 我可以在这个系统中记录 Alice 和 Bob 何时醒来以及他们在 2019 年 8 月 1 日或 2024 年晚餐吃了什么。

关于如何最好地构建数据库表有什么建议吗?

具有主要人员 ID 的人员表? 行:n

带有主日期 ID 的日期表? 行数:米

还有一个 personDate 表将人员 ID 和日期 ID 作为外键? 行 n x m

最佳答案

我认为您不需要日期表,除非您想使用它来使特定查询更容易。比如左连接反对日期来看看你错过了哪几天的事件。尽管如此,我还是坚持使用 DATE 或 DATETIME 作为字段,并避免创建单独的代理外键。它不会节省任何空间,并且可能会表现更差,并且对开发人员来说更难以使用。

这对我来说似乎简单又好。我不会太担心仅基于元素数量的性能。您可以毫无问题地插入十亿条记录,这意味着一个非常大的站点。

如果事件没有发生,就不要插入记录。换句话说,您希望数据库随着实际使用情况而增长。避免基于幻象事件的增长,你应该没问题。

person
    person_id


action
    action_id

personAction
    person_id
    action_id
    action_datetime

关于mysql - 数据库设计: Value(s) per user per day,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327392/

相关文章:

javascript - 在剑道网格中保存空字段

php - Laravel 5.3,似乎无法配置使用哪个数据库?

php - 联合查询后如何更新?

c++ - boost::asio tcp 数据库服务器

MySQL GROUP_CONCAT() 对待第一个值的方式与其他值不同

c# - 如何删除一条记录?

php - 将 MYSQL 多边形转换为 PHP 中的文本

mysql - 使用联接比较数据的最佳方法是什么?

java - Spring @Transactional 在 ApplicationServer 中不起作用

php - 如何从 Laravel 查询中获得相反的结果