用于基于时间的图表和报表生成的MySQL数据库结构

时间:2018-10-20 18:59:12

标签: php mysql sql database-design charts

我的应用程序将允许用户喜欢或不喜欢产品,并留下简短的反馈。我必须创建一个功能,该功能将根据不同的时间范围显示图形并生成报告,大概是每年,每月,每周和每天。

我必须通过图表显示在特定时间段内有多少用户喜欢或不喜欢该产品,并生成报告。因此,我的应用程序应该能够生成特定产品的 2018年8月的每日图 2018年的每月图。如果该图表是每日图表,则该图表应该能够显示每天有多少用户喜欢或不喜欢该产品;类似地,它可以是每周,每月或每年的时间段

我不确定此类应用程序的数据库结构应该是什么?这是我到目前为止所想的。

products: id, name, descp...etc // products table

users: id, name, email ...etc // users table

user_reactions: id, user_id(foreign key), product_id(foreign key), action(liked or disliked, tinyint), feedback // user_reactions table

data: id, product_id(foreign key), date(Y-m-d), total_like, total_dislike. // data table, will be used to make graph and report

我在想什么,我将在每天23:59:59运行一次cron作业,以计算每种产品的喜欢和不喜欢的次数,并将数据添加到最后一个表(即data表)中如上所述,然后将使用此data表制作图形和报告。我不确定此数据库结构是否正确或存在一些看不见的问题(可能在将来?)

注意:我的申请将在PHPMySQL

1 个答案:

答案 0 :(得分:0)

嗯,您的问题没有正确的答案。因为您问题的答案称为基于意见的答案。你我肯定会得到足够的赞成票。但是,仍然可以听到我的声音,因为我曾经在您的状态下。

著名教授唐纳德·纳斯先生引述

过早的优化是万恶之源

  

我们应该忘记效率低下的问题,例如大约97%的时间:过早的优化是万恶之源。然而,我们不应放弃我们那临界的3%的机会。

想法是您必须开始构建。随着应用程序的进展,您将面临麻烦,数据库将面临问题,系统可能无法扩展或无法处理一百万个请求。但是在遇到这个问题之前,您不必担心。

我并不是说您应该去盲目地构建一个无限循环的系统,或者创建一个可能导致死锁的表联接。希望你明白我的意思。

使用您的知识和理解来构建系统。因为没有直接的方法可以解决问题。 构建功能->您遇到问题->调整您的应用程序->冲洗并重复。有一天,您自己的经历将为您显示正确的路径。

从您给出的描述中,我无法确切地知道它将如何出现,但是我相信它足以满足您的最初需求。随着您的前进,您可能会发现很难添加新功能或添加其他约束,但这又是另一天。等待它,然后问另一个问题。

我希望我已经回答了你的问题。