我想在我的 PHP 项目中实现一个过滤器功能。为了实现过滤器,我通常只在查询中添加一个 WHERE 子句来显示过滤结果。
我的问题是:这些过滤器不仅需要一个简单的添加 WHERE 子句,还需要一个包含多个 JOIN的巨大查询。生成的查询有 > 30 行。
稍后,还应该有一个搜索功能,然后也需要这个巨大的查询。我想知道这是否是一个好习惯,或者我是否应该在我的数据库表中添加一个“冗余”数据库列,在其中计算每次更新时过滤所需的属性。有了这个专栏,我就不会在我的项目的不同地方进行大量查询,而是有一个多余的专栏。
你怎么看?
问候
如上所述,这里是表结构/代码。这不是确切的代码,因为还有一个修订系统使它变得更加复杂,但理解这一点就足够了:
表格提交:
ID (primary)
(additionalColumns)
表格报告:
ID (primary)
submissionID (reference to submission table)
(additionalColumns)
表报告对象:
reportID (reference to reports table, multiple report_object for one report)
表会计:
ID (primary)
reportID (reference to reports table, multiple accountings for one report)
(additionalColumns)
表accounting_objects:
ID
accountingID (reference to accounting table, multiple accounting_object for one accounting)
(additionalColumns)
对于提交,正在创建一个或多个报告,其中包含多个帐户对象 (report_objects)。对于每个报告,我可以创建多个会计,其中每个会计用于报告的几个对象。会计报表对象存储在accounting_object中
我的查询/过滤器检查一个submissionID 的每个report_object 是否为一个submissionID 计算(accounting_object 存在)。