我有一個使用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