Show TOC

Denormalizing Tables and ColumnsLocate this document in the navigation structure

Database normalization consists in eliminating redundancy and inconsistent dependencies between tables. While normalization is generally considered the goal of database design, denormalization, the deliberate duplication of certain data in order to speed data retrieval, may sometimes be more desirable.

PowerDesigner supports denormalization through:
  • Horizontal partitioning - dividing a table into multiple tables containing the same columns but fewer rows.
  • Vertical partitioning - dividing a table into multiple tables containing the same number of rows but fewer columns.
  • Table collapsing - merging tables in order to eliminate the join between them.
  • Column denormalization - repeating a column in multiple tables in order to avoid creating a join between them.
Horizontal and vertical partitioning involve tradeoffs in terms of performance and complexity. Though they can improve query response time and accelerate data backup and recovery, they require additional joins and unions to retrieve data from multiple tables, more complex queries to determine which table contains the requested data, and additional metadata to describe the partitioned table. Column denormalization can simplify queries but requires more maintenance and storage space as data is duplicated.
When deciding whether to denormalize, you should analyze the data access requirements of the applications in your environment and their actual performance characteristics. Often, good indexing and other solutions may more effectively address performance problems. Denormalization may be appropriate when:
  • Critical queries rely upon data from more than one table.
  • Many calculations need to be applied to columns before queries can be successfully answered.
  • Tables need to be accessed in different ways by different kinds of users simultaneously.
  • Certain columns are queried extremely frequently.