# Dictionnaire des données

Un dictionnaire des données est une collection de métadonnées ou de données de référence nécessaire à la conception d'une base de données relationnelle. Il revêt une importance stratégique particulière, car il est le vocabulaire commun de l'organisation. Il décrit des données aussi importantes que les clients, les nomenclatures de produits et de services, les annuaires, etc. C'est donc le référentiel principal de l'entreprise, sur lequel s'appuient les décisions de celle-ci. Il est souvent représenté par un tableau à quatre colonnes contenant le nom, le code et le type de donnée ainsi que des commentaires.
Un dictionnaire des données doit respecter les contraintes suivantes.
* Tous les noms doivent être monovalués et non décomposables.
* Il ne doit pas y avoir d'homonymes, ni de synonymes.
* Les données y sont regroupées par entité.
* Les identifiants sont complètement précisés.
* Les commentaires doivent être pertinents.
Un dictionnaire des données, ou Référentiel (base de données), ainsi que le définit le Dictionnaire informatique IBM (IBM Dictionary of Computing), est un « référentiel centralisé de l'information sur les données, leurs signification, relation avec d'autres données, leurs origine, utilisation et format ». Oracle le définit comme une collection des tables avec des métadonnées. Ce terme peut avoir une parmi plusieurs significations proches, qui sont liées aux notions de base de données et de système de gestion de base de données (SGBD):
* Un document qui décrit la base de données ou une collection des bases de données
* Un composant intégral de SGBD nécessaire pour définir sa structure
* Une partie de middleware qui étend ou remplace le dictionnaire de données natives de SGBD.

## Documentation

Les termes dictionnaire des données et référentiel des données désignent plutôt un utilitaire logiciel plus générique qu'un catalogue. Le catalogue est étroitement couplé avec le logiciel de SGBD. Il fournit l'information stockée à l'utilisateur et l'administrateur de base de données (DBA), mais ce sont principalement les différents modules logiciels de SGBD qu'y accèdent, tels que les compilateurs DDL et DML, l'optimiseur des requêtes, le processeur des transactions, les générateurs des rapports et l'applicateur des contraintes.
De l'autre côté, le dictionnaire des données est une structure des données qui stocke les métadonnées, c'est-à-dire les données (structurées) sur l'information.
Le progiciel pour un dictionnaire de données autonome ou un référentiel des données peut interagir avec des modules applicatifs de SGBD, mais il est utilisé principalement par les concepteurs, utilisateurs et les administrateurs des systèmes informatiques pour la gestion des ressources d'information. Ces systèmes maintiennent l'information sur la configuration matérielle et logicielle du système, sa documentation, ses applications et les utilisateurs ainsi que les autres informations nécessaires pour l'administration du système.
Si un système de dictionnaire de données est utilisé uniquement par les concepteurs, utilisateurs et les administrateurs mais non pas par le Logiciel SGBD, on l’appelle un dictionnaire des données passif. Sinon on l'appelle un dictionnaire des données actif ou dictionnaire des données.
Quand un dictionnaire des données passif est mis à jour, cela se fait à la main et indépendamment des modifications de la structure de la base de données. Concernant un dictionnaire des données actif, c'est d'abord le dictionnaire qui est mis à jour et ensuite la modification de la base se produit automatiquement comme résultat.
Les utilisateurs de la base de données et les développeurs d'application peuvent profiter d'un dictionnaire de données faisant autorité qui catalogue l'organisation, le contenu et les conventions d'une ou plusieurs bases de données. Typiquement il inclut les noms et les descriptions des différentes tables (enregistrements ou entités) et leur contenu (champ), puis les détails supplémentaires comme le type et la longueur de chaque élément de donnée.
Un autre élément important qui peut être fourni par un dictionnaire des données est les relations entre les Tables. Cela est parfois mentionné dans les diagrammes Entité-Association, ou si on utilise une zone de descripteur SQL (set descriptors), pour identifier dans quelle zone participe une telle table de la base de données.
Dans un dictionnaire de données actif, des contraintes peuvent être appliquées aux données sous-jacentes. Par exemple, un Intervalle peut être appliqué pour les valeurs d'une donnée numérique d'un élément de données (champ), ou un Enregistrement d'une Table peut être forcé de participer à une relation avec un autre type d'enregistrement.
De plus, Les SGBD distribués peuvent avoir certains spécificités d'emplacement décrits dans leurs dictionnaires de données actifs (par exemple où les Tables sont physiquement situées).
Le dictionnaire des données contient les types des enregistrements (tables) créés dans la base de données par des fichiers de commande générés par le système, adaptés à chaque SGBD final pris en charge. Oracle a toute une liste des vues spécifiques pour l'utilisateur « sys ». Cela permet aux utilisateurs de rechercher l'information exacte dont ils ont besoin. Les fichiers des commandes contiennent les instructions SQL pour CREATE TABLE, CREATE UNIQUE INDEX, ALTER TABLE (pour l'intégrité référentielle), etc., en utilisant l'instruction spécifique requise par le type de base de données.
Il n’existe pas de norme universelle concernant le niveau de détail d'un tel document.

## Middleware

Lors de la création des applications de base de données, il peut être utile d'introduire une couche supplémentaire de logiciel de dictionnaire de données, c'est-à-dire un middleware, qui communique avec le dictionnaire des données de SGBD sous-jacent. Un tel dictionnaire de données de « haut niveau » peut offrir des fonctionnalités supplémentaires et un degré de souplesse qui va au-delà des limitations du dictionnaire des données natif de « bas niveau », dont le but principal est d'assurer les fonctions de base de SGBD, et non pas les besoins d'une application typique. Par exemple, le dictionnaire de données de haut niveau peut fournir l'alternative aux modèles entité-association adaptés à différentes applications partageant une base de données commune. Les extensions du dictionnaire des données peuvent aider dans l'optimisation de requêtes par rapport aux bases de données distribuées. De plus, les fonctions d'administration de la base de données sont souvent automatisées à l’aide d’outils de restructuration étroitement associés à un dictionnaire de données actif.
Les socles d'applications (ou frameworks) destinés au développement rapide d'applications incluent parfois les fonctionnalités de dictionnaire de données de haut niveau, ce qui peut considérablement réduire la quantité de programmation nécessaire pour construire les menus, les formulaires, les rapports et autres composantes de l'application des bases de données, y compris la base de données elle-même. Par exemple, PHPLens inclut une bibliothèque logicielle PHP pour automatiser la création des tables, des index, et des contraintes des clés étrangéres de manière portable pour plusieurs bases de données. Un autre dictionnaire de données PHP, une partie de RADICORE toolkit, génère automatiquement les objets de programme, les scripts, et le code SQL pour les menus et formulaires avec la validation de données et des jointures complexes. Pour l'environnement ASP.NET, le dictionnaire des données Base One's (en) fournit les fonctionnalités cross-SGBD pour l'automatisation de la création de la base de données, la validation des données, l'amélioration des performances d'utilisation de (cache et d'index), la sécurité des systèmes d'information, et les extensions des types de données. Les fonctionnalités Visual DataFlex (en) fournissent la possibilité d'utiliser les dictionnaires de données comme des fichiers de classes pour créer une couche intermédiaire entre l'interface d'utilisateur et la base de données sous-jacente. Le but est de créer les règles standardisées pour gérer l'intégrité des données et renforcer les règles de métier dans une ou plusieurs applications associées.

## Exemples spécifiques à la plate-forme

Dans le cadre de IBM System i, les développeurs utilisent une spécification de description des données (DDS) pour décrire les attributs des données dans les descriptions des fichiers externes par rapport à l'application qui traite les données. La table sys.ts$ dans Oracle garde l'information sur toutes les tables de la base de données. Elle fait partie du dictionnaire des données créé lorsque la base de données Oracle est créée.

## Que trouve-t-on dans un dictionnaire des données ?

Tous les catalogues de données comportent un certain nombre de modules et de fonctions standards :
* Dictionnaire de métadonnées, qui permet de décrire chaque data utilisée ou générée par l’entreprise et de visualiser leurs relations les unes avec les autres.
* Étiquetage clair, qui permet de regrouper des ensembles de données par catégorie à l’aide d’étiquettes ou de mots-clés.
* Moteur de recherche, pour trouver les informations en un clic. Il vous suffit d’entrer le nom d’un dossier, d’une balise, un mot-clé, etc., et le tour est joué !
* Gestion des autorisations et des contrôles d’accès, pour protéger les droits de modification des entrées du catalogue. Vous pouvez filtrer les accès en fonction de différents critères (métier, hiérarchie, etc.) et choisir qui peut modifier ou visualiser quelles informations.

## Pourquoi utiliser un dictionnaire de données ?

Le dictionnaire de données permet de :
* démocratiser l’accès à la donnée,
* assurer la fiabilité et la récence des informations,
* contrôler la qualité des données,
* collaborer efficacement grâce à une vision unifiée des données dans l’entreprise,
* faciliter la prise de décision à partir d’informations contextualisées et actionnables.
Cataloguer les données permet de transformer des informations hétérogènes en leviers de décision.