• The article would have benefited from code examples, either in-line or in an attached file.

    The only type of denormalization considered is full redundancy: storing the results of a complex join in a single table. No discussion of the disadvantages of doing this, no analysis of where any performance benefits might come from, aside from join overhead. The design presented seems to be nothing more than a naiive indexed view over the full result of the eliminated join.

    There are many more useful types of denormalization which were not mentioned: maintaining aggregates with indexed view or even triggers for example.

    Overall, I rated it average - 3 stars.

    Paul