Подтвердить что ты не робот

Почему я должен избегать циклов при разработке отношений для базы данных?

Кто-то сказал мне, что плохая конструкция имеет петли в datamodel. Я слышал это раньше пару раз, но не обращал много внимания. Например, у вас есть объекты User, Project, Activity. Проект принадлежит пользователю, поэтому у нас есть отношения "один ко многим" от пользователя к проекту. Деятельность может быть назначена одному пользователю, другому отношения "один ко многим" от пользователя к активности. Конечно, проект определяется набором действий, другими отношениями "один ко многим" от проекта к активности. Таким образом формируется цикл.

Я спросил этого парня, почему это плохой дизайн, но он сказал мне, что он тоже не знает, ему тоже сказали, что обезьяна лучше учится на этом.

Я попытался выполнить поиск, но я думаю, что я не использовал правильные слова, однако это мне кажется чем-то, что должно быть основополагающим для того, кто пытается создать БД.

Итак, может ли кто-нибудь указать мне какую-нибудь полезную информацию о циклах/циклах в диаграммах er/db, следует ли их избегать?

4b9b3361

Ответ 1

Там действительно хорошее отношение к циклам отношений в главе 3 в этой статье.

В общем случае, наиболее распространенной проблемой с циклами является согласованность избыточной информации.

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

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

Итак, вкратце: не моделируйте петли, когда одно отношение полностью выводится из других вместе взятых. Но это нормально, чтобы создавать циклы, когда они не выводятся.

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

НТН.