Разница между однонаправленными и двунаправленными реляционными отношениями

Интересно, что означают эти два слова.

Я встречал их в документации Doctrine, но не могу т понять, что они означают.


person never_had_a_name    schedule 20.04.2010    source источник


Ответы (2)


Это связано с тем, будет ли обычное использование (в домене приложения) пытаться получить доступ к обеим сторонам отношений с другой стороны... Счета-фактуры, вероятно, будут однонаправленными, как если бы мы часто хотели знать, какие продукты находятся на счет-фактура, маловероятно, что вы захотите знать все счета-фактуры, содержащие данный продукт.

Магазины к продуктам, с другой стороны, являются двунаправленными, так как мы могли бы легко получить доступ как ко всем продуктам в определенном магазине, так и найти все магазины, которые продают определенный продукт.

Двунаправленность не ограничивается отношениями «многие ко многим». Отношения между сотрудником и руководителем могут легко быть двунаправленными, если в нашей модели предметной области объект сотрудника должен будет иметь доступ к объекту руководителя сотрудника, и, конечно же, объект руководителей содержит свойство, в котором перечислены все назначенные ему сотрудники. .

Один ко многим, двунаправленный: штат и город, где у штата есть свойство коллекции городов, а у города есть свойство штата.

Однонаправленный: многие ко многим: автобус и пассажир, где у автобуса есть свойство коллекции пассажиров, но у пассажира нет свойства коллекции, перечисляющего все автобусы, в которых ездил пассажир (приложению все равно).

Двунаправленный метод «многие ко многим»: класс Person, где у каждого человека есть свойство «Друзья», как коллекция объектов других людей, с которыми этот человек дружит;
или...
классы Artist и Album, где У исполнителя есть коллекция альбомов, а у альбома есть коллекция исполнителей (где альбом представляет собой сборник треков от нескольких исполнителей).

person Charles Bretana    schedule 20.04.2010

Пример:

У нас есть две таблицы в базе данных: Student таблица, Subject таблица

Двунаправленный «многие ко многим»

Вам необходимо применить навигацию в базе данных из следующих двух направлений:

  • Переход от Student к Subject

Студент может записаться на многие предметы в семестр.

  • Переход от Subject к Student

На предмет может быть зачислено много разных студентов.

Однонаправленный «многие ко многим»

Вам нужно применить навигацию в базе данных только с one направления:

  • Переход от Student к Subject

Студент может записаться на многие предметы в семестр.

person vikbert    schedule 24.03.2016