Почему нет отношений «многие ко многим»? - PullRequest
29 голосов
/ 07 сентября 2011

Я изучаю базы данных и SQL впервые.В тексте, который я читаю (Oracle 11g: SQL Джоан Кастил), говорится, что «отношения« многие ко многим »не могут существовать в реляционной базе данных».Я понимаю, что мы должны избегать их, и я понимаю, как создать соединяющую сущность, чтобы устранить их, но я пытаюсь полностью понять утверждение «не может существовать».

Действительно ли это физически невозможноимеют отношение многие ко многим?

Или это просто очень неэффективно, поскольку приводит к многократному дублированию данных?

Мне кажется, что это последний случай, исоединяющий объект минимизирует дублированные данные.Но может я что-то упустил?Я не нашел конкретной причины (или, еще лучше, примера), которая объясняет, почему следует избегать отношения «многие ко многим», ни в тексте, ни где-либо еще, что я искал.Я искал весь день и повторял только одну и ту же информацию: «не делай этого, а вместо этого используй соединяющий объект».Но мне нравится спрашивать, почему.: -)

Спасибо!

Ответы [ 11 ]

0 голосов
/ 13 января 2018

M: N отношений не должно существовать при проектировании базы данных. Они крайне неэффективны и не предназначены для функциональных баз данных. Две таблицы (сущности) с отношением «многие ко многим» (самолет, аэропорт; учитель, ученик) не могут быть одновременно дочерними, не было бы места для размещения внешних ключей без пересекающейся таблицы. самолет-> рейс <- аэропорт; учитель <- класс -> ученик.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...