Суррогатная ключевая часть бизнес-объекта?
У меня есть таблица базы данных (mysql), представляющая сущность Employee в корпоративном приложении. Суррогатные ключи используются во всей базе данных, поэтому каждая запись сотрудника имеет столбец идентификатора с автоматическим приращением, идентифицирующий сотрудника. Я смоделировал Employee как бизнес-объект (BO) в php следующим образом:
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 содержат для меня бизнес-логику, и я хочу работать с ними БЕЗ какой-либо связи с типом хранилища (база данных и т. Д.). С моим приведенным выше макетом класса я никогда не смогу создать экземпляр Employee без $id
, так что я думаю, что это не правильный способ реализации BO.
Я хочу работать с шаблоном DAO для хранения / загрузки сотрудника. Должен ли я использовать $id
только в рамках DAO?
Кроме того, я обеспокоен тем, что позже в моем приложении будет указан объект Employee, который будет хорошо работать с суррогатом $id
, $user
Свойство также уникально для каждого сотрудника в базе данных. Так, может быть, я должен использовать это свойство вместо?