Много Много, чтобы Manys - PullRequest
       2

Много Много, чтобы Manys

0 голосов
/ 10 сентября 2010

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

Есть ли лучшие способы сформулировать эти отношения и при этом придерживаться третьей нормальной формы?

Как всегда очень ценю ввод.

- S

Ответы [ 2 ]

0 голосов
/ 14 сентября 2010

Я не совсем уверен, понял ли я вашу модель. Я считаю, что у вас есть таблица Item и 7 других связанных с ней таблиц (скажем, категория, автор, страна и т. Д., И т. Д.)).И ваш поиск должен искать эти 7 NxN отношений, и вам не нравится запрос, который делает 7 соединений ... если это проблема, тогда вам следует подумать об использовании полнотекстового поиска .

0 голосов
/ 14 сентября 2010

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

Например, если атрибут A полностью зависит от атрибута B, а атрибут B полностью зависит от атрибута C, вы можете сделатьтаблица измерений с (C, B, A), а затем перенести C в базовую таблицу как внешний ключ.Повторите для всех связанных наборов атрибутов.

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

Если требуется 3-я нормальная форма (и она должна быть обязательна, если данные обновляются несколькими процессами), тогда вы можете нормализовать таблицы измерений в так называемую снежную чешуйкуразмеры.Вы заплатите за это, так как каждый запрос требует большего количества соединений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...