我有一个数据库表(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
属性也是唯一的。那么也许我应该使用这个属性呢?