DDD, ERD, ORM: есть или принадлежит одному? - PullRequest
2 голосов
/ 27 сентября 2010

Мне было интересно, существовала ли такая вещь, как отношения «принадлежит», и какова ее функция, или она была прямо противоположна «имеет»?

Вопрос возник при создании ORM, и он хотел найти способ определить, когда экземпляр сущности должен быть автоматически удален, например:

Пользователь "имеет много" Тема

Тема "имеет много" Комментарий

Тема 'имеет одного' пользователя

Комментарий "имеет одну" тему

Предположим, вы удалили пользовательский экземпляр. Связанные с ним экземпляры потоков должны оставаться нетронутыми. Но если вы удалите экземпляр потока, его комментарии должны быть удалены.

С помощью приведенной выше схемы ORM не может определить, когда удалять, а когда нет. Но если я использую «принадлежу», это может быть решением:

Пользователь "имеет много" Тема

Тема "имеет много" Комментарий

Тема 'имеет одного' пользователя

Комментарий «принадлежит одной» теме

Имеет ли это смысл? Это возможно для ORM, но охватывает ли ERD этот сценарий? Соединения «один к одному» или «один ко многим» кажутся недостаточными.

Есть мысли?

1 Ответ

2 голосов
/ 27 сентября 2010

Общие реализации, которые я видел, все обеспечивают отношение "принадлежит".Технически это будет существовать в любом отношении «Имеет много», потому что внешний ключ будет существовать в дочерней таблице.

Определение из Документация класса ORM Коханы предполагает, что отношение «один к одному» «имеет один» или «принадлежит» зависит от расположения поля внешнего ключа.Если он находится в той же таблице, что и базовая модель, то это отношение «принадлежит».Если он находится в другой таблице, то это отношение «имеет один».

...