Является ли хорошей идеей использовать нормализованные таблицы с денормализованными индексированными представлениями? - PullRequest
3 голосов
/ 10 октября 2008

В данный момент я создаю новое приложение с высоким отношением чтения: записи. У моего нынешнего работодателя у нас есть много денормализованных данных в наших таблицах по соображениям производительности. Лучше ли иметь полностью таблицы 3NF, а затем использовать индексированные представления для всей денормализации? Должен ли я выполнять запросы к таблицам или представлениям?

Примером некоторых вещей, которые меня интересуют, являются агрегаты дочерних таблиц столбцов (например, где-то хранится счетчик сообщений пользователя).

Ответы [ 2 ]

3 голосов
/ 10 октября 2008

Если вы собираетесь использовать представления для представления денормализованных данных пользователю (и вы используете SQL Server), вам следует проверить предложение SCHEMABINDING. Если представление привязано к схеме, вы можете проиндексировать его, и индекс будет обновляться при обновлении базовых таблиц. Таким образом, если индексы настроены правильно, люди, которые ищут данные, могут на самом деле выбирать из индекса, поэтому нет необходимости перестраивать сложное представление для каждого запроса, но пользователи по-прежнему будут обновляться. дата изменения базовых таблиц.

3 голосов
/ 10 октября 2008

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

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

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

...