代理业务对象的关键部分?

时间:2015-01-23 08:37:51

标签: php orm surrogate-key

我有一个数据库表(mysql),代表企业(如应用程序)中的实体 Employee 。代理键在整个数据库中使用,因此每个 Employee 记录都有一个自动增加的ID列,用于标识Employee。我已经在PHP中将Employee建模为业务对象(BO),如下所示:

class Employee 
{
    public $id;    // surrogate key of database record
    public $firstName;
    public $user;
    public $posInCompany // associated EmployeePosition

    public function __construct($emplData)
    {
        $this->id = $emplData['id'];
        // ... init other properties
    }       
}

我想知道$id属性是否属于该类的一部分?实际上它代表了数据库中的代理键,因此与存储相关。但是我希望BO们对它们的存储/加载方式一无所知(从持久性中分离逻辑)。 BO为我保留业务逻辑,我希望与它们一起工作,而不与存储类型(数据库等)相关联。使用我上面的类布局,我无法在不给出$id的情况下实例化 Employee ,所以我想这不是实现BO的正确方法。

我想使用DAO模式来存储/加载 Employee 。我应该仅在DAO问题中使用$id吗?

此外,我担心稍后在我的应用程序中识别 Employee 对象,这对代理$id很有用。对于数据库中的每个Employee,$user属性也是唯一的。那么也许我应该使用这个属性呢?

0 个答案:

没有答案