Ответ 1
Это связано с тем, будет ли распространенное использование (внутри домена приложения) пытаться получить доступ к обеим сторонам отношений с другой стороны... Счета-фактуры к продуктам, вероятно, будут однонаправленными, так как мы часто хотим знать, какие продукты находятся в счете-фактуре, маловероятно, что вы захотите узнать все счета-фактуры, содержащие данный продукт.
Магазины для продуктов, с другой стороны, двунаправлены, так как мы могли бы легко получить доступ ко всем продуктам в определенном магазине или найти все магазины, которые продают определенный продукт.
Bi-Directional не ограничивается тем, где отношение является отношением "многие ко многим". Отношение сотрудника к наблюдателю может быть легко двунаправленным, если в нашей модели домена объект сотрудника должен иметь доступ к объекту супервизора сотрудника, и, конечно, объект супервизора содержит свойство, в котором перечислены все его назначенные сотрудники,
От одного до многих двунаправленных: Штат и город, где государство имеет коллекционное имущество городов, а город имеет государственную собственность.
Многие для многих однонаправленных: Bus и Rider, где у Bus есть свойство коллекции Riders, но у Rider нет коллекции, в которой перечислены все автобусы, на которых ездил Rider (приложение не заботится).
Многие для многих двунаправленных: Класс человека, в котором у каждого человека есть свойство "Друзья", в качестве коллекции других лиц, с которыми этот человек дружит.
или...
Артисты и альбомы, где у исполнителя есть коллекция альбомов, а в альбоме есть коллекция исполнителей (где альбом - это сборник треков из нескольких исполнителей).