Codd's twelve rules are a set of thirteen rules (numbered zero
to twelve) proposed by Edgar F. Codd, a pioneer of the relational model for databases, designed to define what is required from a database
management system in order for it to
be considered relational, i.e., a relational database management
system .
Codd produced these rules as part of a personal campaign to
prevent his vision of the relational database being diluted, as database
vendors scrambled in the early 1980s to repackage existing products with a
relational veneer. Rule 12 was particularly designed to counter such a
positioning.
Even if such repackaged non-relational products eventually gave
way to SQL DBMSs, no popular "relational" DBMSs are actually
relational, be it by Codd’s twelve rules or by the more formal definitions in
his papers, in his books or in succeeding works in the academia or by its
coworkers and successors, Christopher J. Date, Hugh Darwen, David McGoveran and Fabian Pascal. Only less known DBMSs, most
of them academic, strive to comply. The only commercial example, as of December
2010, is Dataphor.
The rules
For a system to qualify as a relational database management system
(RDBMS), that system must use its relational facilities
(exclusively) to manage the database.
Rule 1: The information rule:
All information in a relational database (including table and
column names) is represented in only one way, namely as a value in a table.
Rule 2: The guaranteed access rule:
All data must be accessible. This rule is essentially a
restatement of the fundamental requirement for primary keys. It says that every individual scalar value in the database must
be logically addressable by specifying the name of the containing table, the name of the containing column and the primary key value of
the containing row.
Rule 3: Systematic treatment of null values:
The DBMS must allow each field to remain null (or empty).
Specifically, it must support a representation of "missing information and
inapplicable information" that is systematic, distinct from all regular values (for example, "distinct
from zero or any other number", in the case of numeric values), and
independent of data type. It is also implied that such representations
must be manipulated by the DBMS in a systematic way.
The system must support an online, inline, relational catalog that is accessible to authorized users by means of their
regular query language. That is, users must be able to access the
database's structure (catalog) using the same query language that they use to
access the database's data.
Rule 5: The comprehensive data sublanguage rule:
The system must support at least one relational language that
2.
Can be used both
interactively and within application programs,
3.
Supports data definition
operations (including view definitions), data manipulation operations (update
as well as retrieval), security and integrity constraints, and transaction management operations (begin, commit, and
rollback).
All views that are theoretically updatable must be updatable by
the system.
Rule 7: High-level insert, update, and delete:
The system must support set-at-a-time insert, update,
and delete operators. This means that data can be retrieved
from a relational database in sets constructed of data from multiple rows
and/or multiple tables. This rule states that insert, update, and delete
operations should be supported for any retrievable set rather than just for a
single row in a single table.
Rule 8: Physical data independence:
Changes to the physical level (how the data is stored, whether in
arrays or linked lists etc.) must not require a change to an application based
on the structure.
Rule 9: Logical data independence:
Changes to the logical level (tables, columns, rows, and so on)
must not require a change to an application based on the structure. Logical
data independence is more difficult to achieve than physical data independence.
Rule 10: Integrity independence:
Integrity constraints must be specified separately from
application programs and stored in the catalog. It must be possible to change such constraints as and when
appropriate without unnecessarily affecting existing applications.
Rule 11: Distribution independence:
The distribution of portions of the database to various locations
should be invisible to users of the database. Existing applications should
continue to operate successfully :
1.
when a distributed
version of the DBMS is first introduced; and
2.
when existing distributed
data are redistributed around the system.
Rule 12: The nonsubversion rule:
If the system provides a low-level (record-at-a-time) interface,
then that interface cannot be used to subvert the system, for example,
bypassing a relational security or integrity constraint.
No comments:
Post a Comment