In information theory, the term redundancy describes information or data that is present multiple times in an information source. A unit of information is redundant if it can be omitted without loss of information. Identifying and removing such redundancies is called deduplication.
Redundant is the part of a message that does not contain any information. The redundant part of the message can be a function of the information contained in the message. In information technology and telecommunications applications, redundancy is used in a targeted manner to detect errors. In addition to detecting errors, greater redundancy also makes it possible to correct them. Redundancy therefore allows an increase in quality (fewer errors) at the expense of quantity (higher data rate). The amount of redundancy to be used in each case therefore depends on the fault tolerance of the respective application – in banking and space travel, a single overturned bit could cost a lot of money, while in Internet telephony or DVB, even the continuous loss of entire packets is irrelevant.
In database development as well as in the data structures of programs, it is important to avoid redundancies as completely as possible, as these can lead to higher storage space requirements and inconsistencies. Redundancies are therefore counted as anomalies. Freedom from redundancy is considered a basic principle for a logical data model.
---
By normalizing the database schema, redundancies can be largely avoided. There are also redundancies that are unavoidable (for example, key redundancies) and are therefore accepted as a necessary evil. There are also redundancies that are accepted because avoiding them would be too much effort in relation to their problems, such as the multiple occurrence of an attribute value or the double storage of an entry. The deliberate acceptance of redundancy in order to gain better reading performance is called denormalization.
In data structures of programs and databases, redundancies can lead to program errors. The programmer must make sure that he/she also keeps the redundant data consistent with all changes. This requires a lot of synchronization effort. The larger the project and the longer the project is developed, the more difficult this becomes. When multiple programmers unknowingly work independently on redundant data, it’s almost impossible to keep the changes consistent.

There are some cases where intentionally induced data redundancy reduces the software’s computational time. It can be achieved through targeted denormalization. However, this precisely calculated and intentional redundancy must be clearly distinguished from carelessly created redundancy because someone does not apply the normalization rules. Denormalizations usually increase reading performance but worsen writing performance.