# Diccionari de dades

Un diccionari de dades, com es defineix a IBM Dictionary of Computing és un "repositori centralitzat d'informació sobre dades com ara el significat, relacions amb altres dades, origen, ús i format." El terme pot tenir un o diversos significats relacionats pertanyents a bases de dades i Sistemes Gestors de Bases de Dades (SGBD):
* un document descrivint una base de dades o una col·lecció de bases de dades
* un component integral d'un SGBD que és requerit per a determinar la seva estructura
* una peça de middleware que estén o suplanta el diccionari de dades nadiu d'un SGBD

## Documentació del diccionari de dades

Els usuaris de bases de dades i els desenvolupadors d'aplicacions de programari es poden beneficiar d'un document autoritatiu de diccionari de dades que catalogui l'organització, els continguts i les convencions d'una o més bases de dades. Això típicament inclou noms i descripcions de diverses taules i camps a cada base de dades, més detalls addicionals, com ara el tipus i longitud de cada element de dades. No existeix un estàndard universal al nivell de detall d'un document formal, sinó que és principalment una selecció de metadades sobre l'estructura de la base de dades, no les dades en si mateixes.
Un document de diccionari de bases de dades també pot incloure més informació descrivint com es codifiquen els elements. Un dels avantatges d'un document de diccionari de dades ben dissenyat és que ajuda a establir consistència en bases de dades complexes, o a una gran col·lecció de bases de dades federades.

## El component diccionari de dades d'un SGBD

Tot sistema de gestió de bases de dades té programari integral per accedir a les metadades que descriuen una estructura de la base de dades. Aquesta col·lecció de metadades i funcions, el diccionari de dades de la SGBD, és necessari per a suportar consultes i llenguatges de manipulació de dades, com ara SQL. A més de fer servir el diccionari de dades del SGBD implícitament per a processar peticions a la base de dades, cada SGBD ofereix interfícies de programació per a accés passiu al diccionari de dades, permetent als programadors generar documentació del diccionari de dades mitjançant informes automatitzats derivats de la base de dades. Les modificacions a l'estructura de la base de dades, que són reflectides com a canvis al diccionari de dades, generalment necessiten les accions d'un administrador de base de dades privilegiat.
El diccionari de dades del SGBD conté informació que el SGBD necessita per a realitzar les seves funcions i suportar la seva implementació particular, que varia considerablement d'un producte a un altre. Les interfícies programables per a diccionaris de dades de diferents productes SGBD varien, perquè molts aspectes de les metadades són dependents de la implementació i els estandards per a funcions de diccionari de dades són un desenvolupament relativament recent. Per exemple, MySQL versió 5.0 va afegir suport de funcionalitats basades en les noves extensions d'esquemes de definició i informació de SQL 2003. D'altra banda, les facilitats de diccionari de dades extensives d'Oracle es van original molt abans que l'estàndard SQL:2003 fos definit. Els elements que es troben habitualment a un diccionari de dades de SGBD inclouen:
* descripcions detallades de taules i camps
* informació d'indexació
* restriccions d'integritat referencial
* definicions d'esquema de base de dades
* procediments emmagatzemats i disparadors
* informació de control d'accés, com ara noms d'usuari, rols, i privilegis
* paràmetres d'ubicació de l'emmagatzemament
* estadístiques d'ús de la base de dades

## Middleware diccionari de dades

En la construcció d'aplicacions de base de dades, pot ser útil introduir una capa addicional de programari, com middleware, que es comuniqui amb el diccionari de dades del SGBD subjacent. Com a diccionari de dades d'"alt nivell" pot oferir funcionalitats addicionals i un grau de flexibilitat que va més enllà de les limitacions dels diccionaris de dades de "baix nivell" nadius, el propòsit principal dels quals és suportar les funcions bàsiques del SGBD, no els requeriments d'una aplicació convencional. Per exemple, un diccionari de dades d'alt nivell pot oferir models entitat-relació alternatius adaptats a diferents aplicacions que comparteixen una base de dades comú. Les extensions al diccionari de dades també poden assistir en l'optimització de consultes contra bases de dades distribuïdes.
Els frameworks de programari orientats a desenvolupament ràpid d'aplicacions a vegades inclouen facilitats de diccionari de dades d'alt nivell, que poden reduir substancialment la quantitat de programació necessitada per a construir menús, formularis, informes, i d'altres components de l'aplicació de la base de dades, incloent-hi la base de dades mateixa. Per exemple PHPLens inclou una biblioteca de classes PHP per a automatitzar la creació de taules, índexs, i restriccions de clau forana de forma portable per a múltiples bases de dades. Un altre diccionari de dades basat en PHP, part del toolkit RADICORE, genera automàticament objectes de programa, scripts i codi SQL per a menús i formularis amb validació de dades i JOINs complexos. Per a l'entorn ASP.NET, el diccionari de dades de Base One International ofereix facilitats per a múltiples SGBD per a creació automatitzada de bases de dades, validació de dades, millora de rendiment (caching i utilització d'indexs). seguretat d'aplicació, i tipus de dades estesos.

## Vegeu també

* Modelatge de dades
* ISO/IEC 11179
* Registre de metadades
* Espectre semàntic

## Referències

* ↑ ACM, IBM Dictionary of Computing, 10th edition, 1993
* ↑ TechTarget, SearchSOA, What is a data dictionary? Arxivat 2009-02-12 a Wayback Machine.
* ↑ AHIMA Practice Brief, Guidelines for Developing a Data Dictionary Arxivat 2008-12-19 a Wayback Machine., Journal of AHIMA 77, no.2 (February 2006): 64A-D.
* ↑ Webopedia, What is a data dictionary?
* ↑ Troels Arvin, Comparison of different SQL implementations, Command line operations / metadata
* ↑ MySQL AB, MySQL 5.0 New Features: Data Dictionary Arxivat 2008-05-15 a Wayback Machine.
* ↑ Oracle Corp., Oracle Database Concepts, 10g Release 2 (10.2), 7, The Data Dictionary
* ↑ U.S. Patent 4774661, Database management system with active data dictionary, 11/19/1985, AT&T
* ↑ U.S. Patent 4769772, Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases, 02/28/1985, Honeywell Bull
* ↑ PHPLens, ADOdb Data Dictionary Library for PHP Arxivat 2007-11-07 a Wayback Machine.
* ↑ RADICORE, What is a Data Dictionary?
* ↑ Base One International Corp., Base One Data Dictionary