Denormalization is the reverse process of the normalization process. Denormalization works by adding redundant data or grouping data to optimize the performance. Even though, adding redundant data sounds counter-productive, sometimes denormalization is a very important process to overcome some of the shortcomings in the relational database software that may incur heavy performance penalties with normalized databases (even tuned for higher performance). This is because joining several relations (which are results of normalizing) to produce a result to a query can sometimes be slow depending on the actual physical implementation of the database systems.