Какие есть способы реализации связи многие ко многим между класами в ООП?

программирование базы данных ООП

Ответы:
Многие ко многим — это из реляционных моделей. Классы таковыми не являются — внутри объекта или класса легко может лежать массив связей. В связанных элементах могут быть такие же массивы связей, в т. ч. указывающих в обратную сторону.
Или же можно двум объектам передать указатель на один и тот же промежучтоный объект типа "связь", который будет содержать два указателя на связываемые объекты — это наиболее близкий к реляционной модели способ.
Связь многие ко многим всегда заменяется двумя связями "один ко многим". В РБД для этого вводят новое отношение, в терминах языков программирования такое отношение можно смоделировать используя два массива.
Например, здесь http://www.firststeps.ru/mfc/msdn/r.php?117 приводится отношение состоящее из трех доменов ID, ID_NAME, ID_WORK. И так, вы завели два массива, в первом будут хранится элементы - ID_NAME, во втором - ID_WORK, а ID - это будет индекс в обоих массивах, скажем ID=3, это третий элемент в массиве ID_NAME и в массиве ID_WORK.
Чтоб это решение сделать ООП-friendly, эти два массива можно запихать в класс. Класс можно назвать Many2Many.
P.S. Посмотрите хелп к какой-нибудь ORM либе, там вы сможете найти больше информации о том как нужно мапить реляционные отношения на объекты языков программирования (и наоборот).  


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.