我有一个使用MySQL后端的PHP应用程序。这是一个只有100多个用户的内部应用程序 - 我们没有每秒获得数千个请求或类似的东西。何处对数据执行计算:在对象中还是在数据库中?
当前在我们的数据库中,我创建了我所谓的“主”视图。这些视图加入所有查找表并执行任何基于行的计算。例如,在表格中,我们将存储参考members
表的member_id
。在这个视图中,我将从members
表中删除所有列。我会为所有查找表执行此操作。对于基于行的计算,这些通常是简单的计算,例如两个日期之间的天数差异。我有这些主视图,因为它使得编写查询(特别是报表)非常容易,因为我的所有联接都已经完成,并且已经进行了任何简单的计算。
我的问题是 - 这是做到这一点的最好方法吗?例如,我不会在视图内执行所有这些计算,而是将这些计算移到我的课程中。所以,在我的例子以上,代替具有用于计算两个日期(flock_age
)之间的差值在所述视图中的列,我会简单地在我的类写的方法来执行此计算:
<?php
class FlockEx extends Flock
{
public function getFlockAge()
{
$date1 = new \DateTime($this->getDatePlaced());
$date2 = new \DateTime($this->getDatePickedUp());
$difference = $date1->diff($date2);
return $difference->days;
}
}
而代替加入所有这些查找表的,我会简单地创建这些类,而不是新的实例:
<?php
$flockdb = new FlockDB();
$flock = $flockdb->getFlockById(4);
$memberdb = new MemberDB();
$member = $memberdb->getMemberById($flock->getMemberId());
...
是否有一个“最佳”的方式来做到这一点?或者,最简单的方法是什么?
恕我直言....我会尽我所能做数据库中的任何事情,只要它能够弯曲数据库的肌肉。 – 2014-10-29 19:02:52