2016-01-03 2 views
4

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

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

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

database design

Единственное решение, которое я могу увидеть таблицу проверочного исключить описанный случай, но мне интересно: есть ли лучше исправить?

ответ

3

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

+0

Любые предложения по предотвращению избыточности данных в этом случае? –

+0

Просто обычные предложения: понять основы и сделать свой анализ, затем применить разумные принципы проектирования (Пятая нормальная форма, принцип ортогонального дизайна). – sqlvogel

Смежные вопросы