In relational database theory, a relation, as originally defined by E. F.
Codd, is a set of tuples, where each element dj is a member of Dj, a data
domain. Codd's original definition notwithstanding, and contrary to the
usual definition in mathematics, there is no ordering to the elements of the
tuples of a relation. Instead, each element is termed an attribute value. An
attribute is a name paired with a domain. An attribute value is an
attribute name paired with an element of that attribute's domain, and a tuple is
a set of attribute values in which no two distinct elements have the same
name. Thus, in some accounts, a tuple is described as a function, mapping names
to values. A set of attributes in which no two
distinct elements have the same name is called a heading. A set of tuples having
the same heading is called a body. A relation is thus a heading paired with a
body, the heading of the relation being also the heading of each tuple in its
body. The number of attributes constituting a heading is called the
degree, which term also applies to tuples and relations. The term n-tuple
refers to a tuple of degree n. E. F. Codd used the term "relation" in
its mathematical sense of a finitary relation, a set of tuples on some set of
n sets S1, S2, .... ,Sn. Thus, an n-ary relation is interpreted, under the
Closed World Assumption, as the extension of some n-adic predicate: all
and only those n-tuples whose values, substituted for corresponding free
variables in the predicate, yield propositions that hold true, appear in
the relation. The term relation schema refers to a
heading paired with a set of constraints defined in terms of that heading. A
relation can thus be seen as an instantiation of a relation schema if it
has the heading of that schema and it satisfies the applicable constraints.
Sometimes a relation schema is taken to include a name. A relational database
definition can thus be thought of as a collection of named relation schemas.
In implementations, the domain of each attribute is effectively a data type and
a named relation schema is effectively a relation variable or relvar for short.
In SQL, a database language for relational databases, relations are
represented by tables, where each row of a table represents a single tuple, and
where the values of each attribute form a column.
Examples Below is an example of a relation having
three named attributes: 'ID' from the domain of integers, and 'Name' and
'Address' from the domain of strings: A predicate for this relation, using the
attribute names to denote free variables, might be "Employee number ID
is known as Name and lives at Address". Examination of the relation tells us
that there are just four tuples for which the predicate holds true. So, for
example, employee 102 is known only by that name, Yonezawa Akinori, and does
not live anywhere else but in Naha, Okinawa. Also, apart from the four
employees shown, there is no other employee who has both a name and an
address. Under the definition of body, the tuples
of a body do not appear in any particular order - one cannot say "The
tuple of 'Murata Makoto' is above the tuple of 'Matsumoto Yukihiro'", nor can
one say "The tuple of 'Yonezawa Akinori' is the first tuple." A similar comment
applies to the rows of an SQL table. Under the definition of heading, the
attributes of an element do not appear in any particular order either, nor,
therefore do the elements of a tuple. A similar comment does not apply here to
SQL, which does define an ordering to the columns of a table.
Relation Variables A relational database consists of named
relation variables for the purposes of updating the database in response to
changes in the real world. An update to a single relvar causes the body of the
relation assigned to that variable to be replaced by a different set of tuples.
Such variables are classified into two classes: base relation variables and
derived relation variables, the latter also known as virtual relvars but
usually referred to by the short term view.
A base relation variable is a relation variable which is not derived from any
other relation variables. In SQL the term base table equates approximately to
base relation variable. A view can be defined by an expression
using the operators of the relational algebra or the relational calculus. Such
an expression operates on one or more relations and when evaluated yields
another relation. The result is sometimes referred to as a "derived"
relation when the operands are relations assigned to database variables. A view
is defined by giving a name to such an expression, such that the name can
subsequently be used as a variable name. By using a Data Definition Language, it
is able to define base relation variables. In SQL, CREATE TABLE syntax
is used to define base tables. The following is an example.
The Data Definition Language is also used to define derived relation
variables. In SQL, CREATE VIEW syntax is used to define a derived relation
variable. The following is an example. References
Date, C. J.. An Introduction to Database Systems. Addison–Wesley. ISBN
0-321-19784-4.