28 октября 2011 г. 13:21 пользователь Ivan Petrov
<[email protected]>написал:

>
> > Вообще неплохо бы научиться понимать, что, с чем и как связано. В случае
> > пользователь-задача нужно чётко осознавать, что пользователь суть
> свойство
> > задачи, а не наоборот.
>
> нет. одна задача назначается сразу нескольким пользователям.
>
> соответственно не пользователь - свойство задачи, а пользователИ
>
> это если говорить о первом примере
>
> если говорить о втором примере, то замените task на user_card. хотя
> бизнес изредка подкидывает и такие абстракции, как задача - свойство
> пользователя.
>
> мы говорили о проблеме отслеживания связей двух объектов
>
> user->user_card->delete
>
> поскольку user_card (или task во втором примере) выбирается по
> указателю внутри user, то удаление user_card (или task во втором
> примере) должно менять user
>
> в БД это решается FOREIGN'ами. в DBIC это не решается
>

В БД это решается промежуточной таблицей, для которой в ORM делается
отдельный враппер. А умный программист ещё и перезназвачает акссессор для
is_changed, чтобы тот смотрел в промежуточную таблицу.

Кстати, FK прекрасно работают в ORM, даже если они не определены в описании
таблиц.

-- 
Andrei Protasovitski
< andrei[dot]protasovitski[at]gmail[dot]com >
Diemen, Netherlands
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить