Data dictionary
645139
224991452
2008-07-11T10:21:18Z
150.214.231.66
/* External links */ Category
A '''data dictionary''', as defined in the ''IBM Dictionary of Computing'' is a "centralized repository of information about data such as meaning, relationships to other data, origin, usage, and format."<ref>ACM, [http://portal.acm.org/citation.cfm?id=541721 IBM Dictionary of Computing], 10th edition, 1993</ref> The term may have one of several closely related meanings pertaining to [[database]]s and [[Database management system| database management systems (DBMS)]]:
* a [[document]] describing a database or collection of databases
* an integral [[software component| component]] of a DBMS that is required to determine its structure
* a piece of [[middleware]] that extends or supplants the native data dictionary of a DBMS
==Data dictionary documentation==
Database users and [[Application software| application]] developers can benefit from an authoritative data dictionary document that catalogs the organization, contents, and conventions of one or more databases.<ref>TechTarget, ''SearchSOA'', [http://searchsoa.techtarget.com/sDefinition/0,,sid26_gci211896,00.html What is a data dictionary?]</ref> This typically includes the names and descriptions of various [[Table (database)| tables]] and [[Column (database)| fields]] in each database, plus additional details, like the [[Data type| type]] and length of each [[data element]]. There is no universal standard as to the level of detail in such a document, but it is primarily a distillation of [[metadata]] about [[Database design| database structure]], not the data itself. A data dictionary document also may include further information describing how data elements are encoded. One of the advantages of well-designed data dictionary documentation is that it helps to establish consistency throughout a complex database, or across a large collection of [[federated database]]s.<ref>AHIMA Practice Brief, [http://library.ahima.org/xpedio/groups/public/documents/ahima/bok1_030582.hcsp?dDocName=bok1_030582 Guidelines for Developing a Data Dictionary], ''Journal of AHIMA'' 77, no.2 (February 2006): 64A-D.</ref>
==The data dictionary component of a DBMS==
Every database management system has integral [[software]] for accessing the metadata that describe a database's structure.<ref>Webopedia, [http://www.webopedia.com/TERM/d/data_dictionary.html What is a data dictionary?]</ref> This collection of metadata and [[Subroutine| functions]], the ''DBMS data dictionary'', is needed to support symbolic [[Query language| query]] and [[data manipulation language]]s, such as [[SQL]]. In addition to using the DBMS data dictionary implicitly to process database requests, each DBMS provides explicit [[Application programming interface| interfaces]] for passive data dictionary access, enabling [[programmer]]s to generate data dictionary documentation through automated reports derived from the database. Modifications to the database structure, which are reflected as changes in the data dictionary, generally require the actions of a privileged [[database administrator]].
The DBMS data dictionary contains information that the DBMS requires to perform its functions and support its particular implementation, which varies considerably from one product to another.<ref>Troels Arvin, ''Comparison of different SQL implementations'', [http://troels.arvin.dk/db/rdbms/#cli Command line operations / metadata]</ref> The programmable interfaces to data dictionaries of different DBMS products vary, because many aspects of metadata are implementation-dependent, and [[International Organization for Standardization| standards]] for data dictionary functions are a relatively recent development. For example, [[MySQL]] version 5.0 added support of features based on the new [[SQL/Schemata| SQL 2003 Information and Definition Schemas extensions]].<ref>MySQL AB, [http://dev.mysql.com/tech-resources/articles/mysql-datadictionary.html MySQL 5.0 New Features: Data Dictionary]</ref> On the other hand, [[Oracle Database| Oracle's]] extensive data dictionary facilities originated long before the [[SQL:2003| SQL 2003]] standards were defined.<ref>Oracle Corp., ''Oracle Database Concepts, 10g Release 2 (10.2)'', 7, [http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/datadict.htm The Data Dictionary]</ref> Items typically found in a DBMS data dictionary include:
* detailed descriptions of tables and fields
* [[Index (database)| indexing]] information
* [[referential integrity]] constraints
* [[database schema]] definitions
* [[stored procedures]] and [[database trigger]]s
* [[access control]] information, such as [[username]]s, [[Role-based access control| roles]], and [[Privilege (computing)| privileges]]
* [[Computer data storage| storage]] allocation parameters
* database usage statistics
==Data dictionary middleware==
In the construction of database applications, it can be useful to introduce an additional layer of data dictionary software, i.e. [[middleware]], which communicates with the underlying DBMS data dictionary. Such a "high-level" data dictionary may offer additional features and a degree of flexibility that goes beyond the limitations of the native "low-level" data dictionary, whose primary purpose is to support the basic functions of the DBMS, not the requirements of a typical application. For example, a high-level data dictionary can provide alternative [[entity-relationship model]]s tailored to suit different applications that share a common database.<ref>U.S. Patent 4774661, [http://www.freepatentsonline.com/4774661.html Database management system with active data dictionary], 11/19/1985, AT&T</ref> Extensions to the data dictionary also can assist in [[query optimization]] against [[distributed database]]s.<ref>U.S. Patent 4769772, [http://www.freepatentsonline.com/4769772.html Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases], 02/28/1985, Honeywell Bull</ref>
[[Software framework]]s aimed at [[rapid application development]] sometimes include high-level data dictionary facilities, which can substantially reduce the amount of programming required to build [[Menu (computing)| menus]], [[Form (programming)| forms]], reports, and other components of a database application, including the database itself. For example, PHPLens includes a [[PHP]] [[class library]] to automate the creation of tables, indexes, and [[foreign key]] constraints [[Portability (software)| portably]] for multiple databases.<ref>PHPLens, [http://phplens.com/lens/adodb/docs-datadict.htm ADOdb Data Dictionary Library for PHP]</ref> Another PHP-based data dictionary, part of the RADICORE toolkit, automatically generates program [[Object (computer science)| objects]], [[Scripting language| scripts]], and SQL code for menus and forms with [[data validation]] and complex [[JOIN]]s.<ref>RADICORE, [http://www.radicore.org/viewarticle.php?article_id=5 What is a Data Dictionary?]</ref> For the [[ASP.NET]] environment, [[Base One International| Base One's]] data dictionary provides cross-DBMS facilities for automated database creation, data validation, performance enhancement ([[caching]] and index utilization), [[application security]], and extended [[data type]]s.<ref>Base One International Corp., [http://www.boic.com/b1ddic.htm Base One Data Dictionary]</ref>
==See also==
*[[Data modeling]]
*[[ISO/IEC 11179]]
*[[Metadata registry]]
*[[Semantic spectrum]]
==References==
{{reflist}}
==External links==
*Yourdon, ''Structured Analysis Wiki'', [http://yourdon.com/strucanalysis/wiki/index.php?title=Chapter_10 Data Dictionaries]
[[Category:Data management]]
[[Category:Data modeling]]
[[Category:Knowledge representation]]
[[Category:Metadata]]
[[Category:Data structures]]
[[ca:Diccionari de dades]]
[[de:Data Dictionary]]
[[es:Diccionario de datos]]
[[fa:فرهنگ داده]]
[[fr:Dictionnaire des données]]
[[ko:데이터 사전]]
[[pt:Dicionário de dados]]