удаление циклического отношения БД - PullRequest
2 голосов
/ 01 июня 2009

Как мне избавиться от круговых отношений в моей структуре БД. У меня есть объект под названием Item. Предмет может иметь подпункт / с (круговые отношения). Элемент может иметь более одной ставки в зависимости от того, какой финансовый год это (сущность rate_per_year, созданная для этой цели, и отношение 1 м) Если у элемента есть субэлемент, то у него может не быть ставок (мне нужно, чтобы это отношение нарушилось, если субэлемент создан). Любая помощь будет принята с благодарностью.

Спасибо заранее

Ответы [ 2 ]

1 голос
/ 01 июня 2009

Если цепочка пунктов-> подэлементов может продолжаться на нескольких уровнях, то у вас нет реального выбора, но он есть у вас. Если только элемент верхнего уровня может иметь подэлементы, то вы можете разбить структуру на два уровня, возможно item и group, где только у item может быть скорость, и может иметь или не иметь group .

0 голосов
/ 01 июня 2009

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

Эта страница выглядит интересно Руководство пользователя Sql Anywhere - проблемы взрыва деталей , но, к сожалению, вы не упомянули, какую СУБД вы использовали. Он также поддерживается SQL Server 2005, так что, возможно, вам повезет. Попробуйте найти «Рекурсивные SQL-запросы» и любую используемую вами БД.

Удачи

...