我希望人们就以下问题对 Data Modeling Vs SQL (OOP Vs Select Statement) 的概念发表意见:在研究 MVC 和 OOP 概念时,很容易看到如下所示的自然形式:
<php? | <% | <#
Class Country{
_name:String;
_language:String;
}
Class Estate{
_name:String;
_country:Country;
}
?> | % | #>
我想要得到的观点是一个简单的父子关系。现在,正如我在 ExtJS + PHP 和 JSF 2.0(使用 Converter 的 Java)上所看到的那样,很常见的是,DAO(数据访问对象)的定义如下所示:
Abstract class CountryDAO{
public function getCountry();//This function returns an ArrayList.
public function getCountryById(countryId:Integer);//This function returns a Country Object;
...
}
Class EstateDAO{
public function getEstate(){
$sql = "SELECT * FROM tbl_estate";
//[your favorite way to comunicate with the database here]
//Declare an ArrayList or something to store the result:
$arrayList;
while($result = $ResultSet.next()){
$obj = new Estate();
$obj->name = $result['name'];
$obj->Country = new CountryDAO().getCountryById($result['country_id']);
$arrayList->addItem($obj);
}
}
}
很抱歉混合了语言语法,我尽量不要太依赖语言,只是概念
现在完成我的想法:根据理论,这是正确的概念。就个人而言,我认为不同意它是不对的,因为这是事情的逻辑。但在实践中,现实世界永远不会像你想要的那样闪耀,我从中看到:
如果我有 10 个 Estates,我将在硬盘级别执行 11 个 SQL 语句(根据操作系统的理论,它是所有存储内存中最慢的)。
如果我有 100 个庄园,我将执行 101 条 SQL 语句。
如果我有n 个Estates,我将执行n+1 个SQL 语句。
我的最后一点:我认为,如果您要对可能有数千条记录的数据实体进行建模,那可能会很痛苦。由于这种思路,我在使用 Flex + PHP 时拒绝使用这种设计逻辑。但是现在我正在尝试构建一个将 Flex 和 ExtJS 作为查看器并使用 PHP 作为服务器端的应用程序,我只想确定我不会因为无关紧要的原因而选择最困难的路径。不尊重这种 MVC/OOP 逻辑是否更安全?我夸大其词了吗?您如何看待 OOP 上的 SQL 与数据模型?
谢谢。