28 октября 2011 г. 13:21 пользователь Ivan Petrov <span dir="ltr"><<a href="mailto:i.petro.77.00@gmail.com">i.petro.77.00@gmail.com</a>></span> написал:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
> Вообще неплохо бы научиться понимать, что, с чем и как связано. В случае<br>
> пользователь-задача нужно чётко осознавать, что пользователь суть свойство<br>
> задачи, а не наоборот.<br>
<br>
</div>нет. одна задача назначается сразу нескольким пользователям.<br>
<br>
соответственно не пользователь - свойство задачи, а пользователИ<br>
<br>
это если говорить о первом примере<br>
<br>
если говорить о втором примере, то замените task на user_card. хотя<br>
бизнес изредка подкидывает и такие абстракции, как задача - свойство<br>
пользователя.<br>
<br>
мы говорили о проблеме отслеживания связей двух объектов<br>
<br>
user->user_card->delete<br>
<br>
поскольку user_card (или task во втором примере) выбирается по<br>
указателю внутри user, то удаление user_card (или task во втором<br>
примере) должно менять user<br>
<br>
в БД это решается FOREIGN'ами. в DBIC это не решается<br></blockquote></div><br>В БД это решается промежуточной таблицей, для которой в ORM делается отдельный враппер. А умный программист ещё и перезназвачает акссессор для is_changed, чтобы тот смотрел в промежуточную таблицу.<br>
<br>Кстати, FK прекрасно работают в ORM, даже если они не определены в описании таблиц.<br clear="all"><br>-- <br>Andrei Protasovitski<br>< andrei[dot]protasovitski[at]gmail[dot]com ><br>Diemen, Netherlands<br>