2013-04-14 6 views
2

В настоящее время у меня есть статья с различными отношениями M: N с другими элементами, проблема в том, что эти элементы могут и будут расти и не хотят иметь такое количество таблиц в моей базе данных ,Единое отношение M: N для неизвестного номера элемента

enter image description here

который является правильным способом создания единого отношения M: N для неизвестного числа элементов

+0

Почему бы не иметь эти таблицы в вашей базе данных? По-видимому, ваша целевая среда ограничивает самого магната; Я действительно не вижу, что у вас есть больше, чем несколько таблиц, чем эти (~ 40/50 не так много). Не забывайте, что денормализация имеет цену. – Sebas

+0

Я имею в виду, что я не хочу много категорий категорий, article_category, author, article_author, other, article_other, когда эти таблицы имеют одинаковую структуру (id, name) – rkmax

+0

, вы можете сделать одну таблицу, тогда (article_id, object_id, object_name), object_name являясь именем таблицы, вы связываете статью с – Sebas

ответ

1

Какой правильный способ создания единого отношения M: N для неизвестного числа элементов

Там нет ничего особенно плохого в отдельную таблицу перехода для каждого из M: N отношений.

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

enter image description here

Для получения дополнительных сведений о концепция наследования, поиск «Подтипные отношения» в ERwin Methods Guide. Для некоторых намеков на то, как наследование может быть реализовано в реляционной базе данных, посмотрите на:


Aka. категория, подклассификация, подтипирование, иерархия обобщений ...

+0

Я читал об этом некоторое время, имею ссылку на наследование в Doctrine2 – rkmax

0

Если все элементы будут иметь одинаковые атрибуты Вы можете держать их все в одной таблице с дополнительной колонкой (enum best), чтобы различать их.

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

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

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