A data dictionary is a catalog of metadata that contains the definitions and presentation rules for all application data of an organization and the relationships between the various data objects so that the data set is structured without redundancy and uniformly. It’s a use case of a specific data model.
In a relational database, a data dictionary is a set of tables and views that are read-only in queries (e.g. using the SQL language). The data dictionary is structured like a database, but it does not contain application data, but metadata, i.e. data that describes the structure of the application data (and not the content itself). Such a data catalog is usually set up and maintained via an interactive dialog or with the help of a data definition language (DDL).

A data dictionary can be queried via the following interfaces:
---
User interface
- Data Designers, Modelers
- Applications programmer
- End user
- Database administrator
Software and DBMS interface
- Compiler/Precompiler
- Integrated development environment (IDE) with integration of the data dictionary in the sense of CASE
Applications - Report/Form Generators
- Query Optimizer
- Integrity Constraint Enforcer
In the development and maintenance of data models, a distinction is made between different levels of modeling:
- Conceptual level (usually related to an area of application, in business informatics often also company-wide or even cross-company)
- Logical level
- Physical level in which the conceptual/logical data model is mapped and implemented in relation to a specific DBMS.
According to the different levels of data modeling, the data dictionaries can be differentiated according to the support of these model levels. Depending on the level, the data dictionaries differ in terms of the type, content and data types of the necessary metadata, but also in terms of their functions and evaluation options.
One of the advantages of a well-defined data dictionary is the consistency of the defined data elements across different tables in a database. For example, different tables may contain the PhoneNumber data element; A data dictionary can be used to ensure that all tables refer to the same data element. This allows for database-wide consistency and a where-used list for all table fields and data elements.