データ辞書(データじしょ、英: data dictionary)は、IBM Dictionary of Computing の定義によれば、「意味、他のデータとの関係、起源、用途、フォーマットなどのデータに関する情報を集中的に保管したもの」である[1]。データベースやデータベース管理システム (DBMS) に密接に関連しており、以下のような意味で使われる。
データベースのユーザーとアプリケーション開発者には、データベースの構造・内容・規約をカタログ化したデータ辞書文書が役に立つ[2]。一般に各データベースのテーブルとフィールドの名前と説明を含み、データ型や各データ要素の長さといった詳細が記述されている。そのような文書をどういう詳細さで記述すべきかという一般的標準は存在しないが、基本的にデータ自体ではなくデータベースの構造についてのメタデータについて記述すべきものである。データ辞書文書はデータ要素がどのように符号化されるかという情報も含む。うまく設計されたデータ辞書文書があると、複雑なデータベースや大規模な連合データベースで一貫性を保ちやすくなる[3]。
データベースアプリケーションを構築する際、データ辞書ソフトウェアの層を追加することもある。これは一種のミドルウェアであり、基盤となるDBMSデータ辞書とやり取りする。このような上位のデータ辞書は、DBMS固有の下位のデータ辞書では不可能な機能や柔軟性を提供できる。DBMS固有のデータ辞書はそのDBMSの基本機能をサポートするためにあるもので、アプリケーションの要求に応えるものではない。例えば上位のデータ辞書を使えば、同じデータベースを共有する複数のアプリケーションに対して、それぞれ最適化された実体関連モデルを提供できる[4]。データ辞書の拡張は、分散データベースに対するクエリ最適化を支援することもできる[5]。
RAD向けのソフトウェアフレームワークは、高度なデータ辞書機能を含むことがあり、データベース自体やメニュー、フォーム、レポートといったデータベースアプリケーションのコンポーネントの構築に要するコード量を大幅に削減できる。例えばPHPLensは、複数のデータベースでの移植性を考慮してテーブル、インデックス、外部キーに制約を加えつつ自動生成するPHPクラスライブラリを備えている[6]。RADICOREツールキットの一部であるPHPベースのデータ辞書機能は、データの妥当性チェックや複雑なJOINを備えたメニューやフォームのオブジェクトプログラム、スクリプト、SQLコードを自動生成する[7]。ASP.NET環境向けの Base One のデータ辞書は、データベースの自動生成、データ妥当性チェック、性能強化(キャッシュとインデックス活用)、セキュリティ、データ型拡張といった機能を提供する[8]。