У меня есть две таблицы; чтобы упростить пример, назовем их lawnmower
и lawn
.Как избежать круговой зависимости здесь
- Газонокосилка всегда косит газон.
- Несколько газонокосилок могут косить один и тот же газон.
- газон имеет одну газонокосилку, которая отвечает за этот газон.
- Газонокосилка может, однако, быть ответственной за 3 газонов, в то же время .
Интуитивное решение:
- Пусть ссылка газонокосилки газона он скашивание
- Пусть лужайки ссылка ответственным газонокосилок
Это дает циклическую зависимость. Какое лучшее решение, чтобы избежать этого? В настоящее время я рассматриваю таблицу responsiblefor
с иностранными ключами на газон и газонокосилку. Это, однако, позволяет нескольким газонокосилкам отвечать за тот же газон, чего раньше не было.
OOP проблема с циклическими зависимостями, не применяется к базам данных. В вашем интуитивном решении нет ничего плохого. – reaanb
Интуитивно это было бы невозможно. Либо не может существовать без другого. Я никогда не смогу создать свою первую лужайку или газонокосилку, потому что они нужны друг другу для существования. – Treeline
Для этого нужны транзакции. – reaanb