С точки зрения баз данных, “Нормализуют для правильности, денормализовывают для производительности” правильную молитву?

Я недавно должен был сделать представление математических выражений в форме класса Выражения. При оценке выражения я должен пересечь древовидную структуру с постпорядком treewalk. Для достижения этого, я реализовал IEnumerable< T> как это:

public IEnumerator<Expression<T>> GetEnumerator()
{
    if (IsLeaf)
    {
        yield return this;
    }
    else
    {
        foreach (Expression<T> expr in LeftExpression)
        {
            yield return expr;
        }
        foreach (Expression<T> expr in RightExpression)
        {
            yield return expr;
        }
        yield return this;
    }
}

Тогда я могу просто использовать foreach для пересечения выражения. Можно также добавить Свойство для изменения пересекающегося алгоритма по мере необходимости.

44
задан Mitch Wheat 16 November 2008 в 03:27
поделиться

1 ответ

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

Большинство СУБД SQL имеют ограниченную поддержку изменения физического представления данных без ущерба для логической модели, поэтому, к сожалению, это одна из причин, по которой вам может потребоваться демормализация. Другой заключается в том, что многие СУБД не имеют хорошей поддержки ограничений целостности нескольких таблиц, поэтому в качестве обходного пути для реализации этих ограничений вы можете быть вынуждены поместить посторонние атрибуты в некоторые таблицы.

5
ответ дан 26 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: