Суррогатная ключевая часть бизнес-объекта?

У меня есть таблица базы данных (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 Свойство также уникально для каждого сотрудника в базе данных. Так, может быть, я должен использовать это свойство вместо?

0 ответов

Другие вопросы по тегам