2012-06-06 4 views
1

Как избежать множества таблиц таблиц в отношениях M: M?Как избежать множества табличных таблиц для отношений M: M?

увидеть следующую модель

enter image description here

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

Примечание: Очевидно, что мы должны иметь в виду, что решение не усложнять будущие запросы, выбирать, сортировать и запросить несколько таблиц, которые смешиваются при составлении отчетов

ответ

1

Если ваш приоритет избежать распространения таблиц ссылок, вы можете использовать наследование (ака категория, подклассов, обобщение иерархии.):

enter image description here

Независимо от того, сколько ребенок лица Item имеет, всегда необходимо только одну таблицу ссылок (PersonItem).

К сожалению, наследование, как правило, напрямую не поддерживается современными СУБД, поэтому вы должны представлять его вручную, используя либо «все классы в одной таблице», либо «класс за таблицу» от these 3 strategies («конкретный класс для таблицы» будет по-прежнему пролистать таблицы ссылок). В некоторых случаях это увеличит сложность, поэтому, если ваш приоритет всегда просуществует, вы, вероятно, лучше придерживаетесь текущего дизайна (хотя это зависит от типов запросов, которые вы намереваетесь запустить - некоторые из них могут быть проще с наследованием) ,

BTW, модель выше не позволит другим Hobby и Thing делится одинаковыми Id. Я предполагаю, что это не важно для вас, но в случае, если это так, это аргумент для модели без наследования (или вам нужно будет указать тип в PK Item).

+0

Я думал об этом! [Model] [http://i.imgur.com/z8ehN.png], но запросы могут быть сложными – rkmax

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