Program-data independence refers to the capability of leaving data intact and accessible regardless of modifications to the database that contains the data. Independence allows database administrators to retool a database to meet an enterprise's new information needs without worrying that the people who need the data for research, reports and making informed decisions will suddenly be unable to access it. Metadata provides database administrators with information about the database management system, or DBMS, itself, helping them maintain data integrity and track database performance.
Database schemata are blueprints for databases, articulating how data is stored within a DBMS and describing the relationships between a database's tables. A physical schema explains how data is stored within a computer, describing the actual hardware used as storage for the digital data. A database's logical schema describes how the data is organized within the database, providing details such as which tables are used for specific data and what values are used as primary keys to establish relationships between tables.
There are two hierarchical levels of program-data independence, each ensuring that data integrity and accessibility is preserved despite any changes that an enterprise might make to the physical or logical schema of its database. Physical data independence is the lower level of the hierarchy and refers to the ability of an enterprise to upgrade the hardware it uses for data storage without disrupting the database's logical schema or the end user's ability to access data through the applications on a computer. Similarly, logical data independence gives database administrators freedom to make changes to the logical schema, adding new tables or appending fields to existing ones, without disrupting end users' access to the DBMS data.
Metadata is data that describes the data within a database. Metadata in a typical DBMS would include data on the database's tables and columns, describing such attributes as table and column names, field sizes and the data type, such as strings, integers or currency values, which each field holds. Metadata also articulates the relationships between tables and the database's rules for accessing data and preserving data integrity.
A database's data dictionary is its storehouse of metadata, consolidating all the data on the database's schema. The database dictionary stores metadata in its own set of tables, which a database administrator creates with a data definition language. The DDL isn't a language in the sense of SQL or Java; it's a subset of commands within a language that allows a user to create and modify database objects such as tables. In addition to data on the database's structure, the data dictionary also contains information about database procedures and user access permissions. This information repository helps preserve data integrity by preventing users from creating objects that duplicate the names of other objects or primary keys that would violate relational integrity.