The relational model (RM) is an approach to managing
data
Data ( , ) are a collection of discrete or continuous values that convey information, describing the quantity, quality, fact, statistics, other basic units of meaning, or simply sequences of symbols that may be further interpreted for ...
using a
structure
A structure is an arrangement and organization of interrelated elements in a material object or system, or the object or system so organized. Material structures include man-made objects such as buildings and machines and natural objects such as ...
and language consistent with
first-order predicate logic, first described in 1969 by English computer scientist
Edgar F. Codd
Edgar Frank "Ted" Codd (19 August 1923 – 18 April 2003) was a British computer scientist who, while working for IBM, invented the relational model for database management, the theoretical basis for relational databases and relational database ...
,
where all data are represented in terms of
tuple
In mathematics, a tuple is a finite sequence or ''ordered list'' of numbers or, more generally, mathematical objects, which are called the ''elements'' of the tuple. An -tuple is a tuple of elements, where is a non-negative integer. There is o ...
s, grouped into
relations. A database organized in terms of the relational model is a
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
.
The purpose of the relational model is to provide a
declarative method for specifying data and queries: users directly state what information the database contains and what information they want from it, and let the
database management system software take care of describing data structures for storing the data and retrieval procedures for answering queries.
Most relational databases use the
SQL data definition and query language; these systems implement what can be regarded as an engineering approximation to the relational model. A ''
table'' in a SQL
database schema
The database schema is the structure of a database described in a formal language supported typically by a relational database management system (RDBMS). The term "wikt:schema, schema" refers to the organization of data as a blueprint of how the ...
corresponds to a predicate variable; the contents of a table to a relation; key constraints, other constraints, and SQL queries correspond to predicates. However, SQL databases
deviate from the relational model in many details, and Codd fiercely argued against deviations that compromise the original principles.
History
The relational model was developed by
Edgar F. Codd
Edgar Frank "Ted" Codd (19 August 1923 – 18 April 2003) was a British computer scientist who, while working for IBM, invented the relational model for database management, the theoretical basis for relational databases and relational database ...
as a general model of data, and subsequently promoted by
Chris Date and
Hugh Darwen among others. In their 1995 ''The Third Manifesto'', Date and Darwen try to demonstrate how the relational model can accommodate certain "desired"
object-oriented features.
Extensions
Some years after publication of his 1970 model, Codd proposed a
three-valued logic (True, False, Missing/
NULL
Null may refer to:
Science, technology, and mathematics Astronomy
*Nuller, an optical tool using interferometry to block certain sources of light Computing
*Null (SQL) (or NULL), a special marker and keyword in SQL indicating that a data value do ...
) version of it to deal with missing information, and in his ''The Relational Model for Database Management Version 2'' (1990) he went a step further with a four-valued logic (True, False, Missing but Applicable, Missing but Inapplicable) version.
Conceptualization
Basic concepts

A ''relation'' consists of a ''heading'' and a ''body''. The heading defines a
set of ''attributes'', each with a ''name'' and ''data type'' (sometimes called a ''domain''). The number of attributes in this set is the relation's ''degree'' or ''
arity
In logic, mathematics, and computer science, arity () is the number of arguments or operands taken by a function, operation or relation. In mathematics, arity may also be called rank, but this word can have many other meanings. In logic and ...
''. The body is a set of ''tuples''. A tuple is a collection of ''n'' ''values'', where ''n'' is the relation's degree, and each value in the tuple corresponds to a unique attribute. The number of tuples in this set is the relation's ''
cardinality
The thumb is the first digit of the hand, next to the index finger. When a person is standing in the medical anatomical position (where the palm is facing to the front), the thumb is the outermost digit. The Medical Latin English noun for thum ...
''.
Relations are represented by ''relational
variables'' or ''relvars'', which can be reassigned.
A ''
database
In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
'' is a collection of relvars.
In this model, databases follow the ''Information Principle'': At any given time, all
information
Information is an Abstraction, abstract concept that refers to something which has the power Communication, to inform. At the most fundamental level, it pertains to the Interpretation (philosophy), interpretation (perhaps Interpretation (log ...
in the database is represented solely by values within tuples, corresponding to attributes, in relations identified by relvars.
Constraints
A database may define arbitrary
boolean expressions as
constraints. If all constraints evaluate as ''true'', the database is ''consistent''; otherwise, it is ''inconsistent''. If a change to a database's relvars would leave the database in an inconsistent state, that change is illegal and must not succeed.
In general, constraints are expressed using relational comparison operators, of which just one, "is subset of" (⊆), is theoretically sufficient.
Two special cases of constraints are expressed as ''keys'' and ''foreign keys'':
Keys
A ''candidate key'', or simply a ''key'', is the smallest
subset
In mathematics, a Set (mathematics), set ''A'' is a subset of a set ''B'' if all Element (mathematics), elements of ''A'' are also elements of ''B''; ''B'' is then a superset of ''A''. It is possible for ''A'' and ''B'' to be equal; if they a ...
of attributes guaranteed to uniquely differentiate each tuple in a relation. Since each tuple in a relation must be unique, every relation necessarily has a key, which may be its complete set of attributes. A relation may have multiple keys, as there may be multiple ways to uniquely differentiate each tuple.
An attribute may be unique across tuples without being a key. For example, a relation describing a company's employees may have two attributes: ID and Name. Even if no employees currently share a name, if it is possible to eventually hire a new employee with the same name as a current employee, the attribute subset is not a key. Conversely, if the subset is a key, this means not only that no employees ''currently'' share an ID, but that no employees ''will ever'' share an ID.
Foreign keys
A ''foreign key'' is a subset of attributes ''A'' in a relation ''R
1'' that corresponds with a key of another relation ''R
2'', with the property that the
projection of ''R
1'' on ''A'' is a subset of the projection of ''R
2'' on ''A''. In other words, if a tuple in ''R
1'' contains values for a foreign key, there must be a corresponding tuple in ''R
2'' containing the same values for the corresponding key.
Relational operations
Users (or programs) request data from a relational database by sending it a
query. In response to a query, the database returns a result set.
Often, data from multiple tables are combined into one, by doing a
join. Conceptually, this is done by taking all possible combinations of rows (the
Cartesian product
In mathematics, specifically set theory, the Cartesian product of two sets and , denoted , is the set of all ordered pairs where is an element of and is an element of . In terms of set-builder notation, that is
A\times B = \.
A table c ...
), and then filtering out everything except the answer.
There are a number of relational operations in addition to join. These include project (the process of eliminating some of the columns), restrict (the process of eliminating some of the rows), union (a way of combining two tables with similar structures), difference (that lists the rows in one table that are not found in the other), intersect (that lists the rows found in both tables), and product (mentioned above, which combines each row of one table with each row of the other). Depending on which other sources you consult, there are a number of other operators – many of which can be defined in terms of those listed above. These include semi-join, outer operators such as outer join and outer union, and various forms of division. Then there are operators to rename columns, and summarizing or aggregating operators, and if you permit
relation values as attributes (relation-valued attribute), then operators such as group and ungroup.
The flexibility of relational databases allows programmers to write queries that were not anticipated by the database designers. As a result, relational databases can be used by multiple applications in ways the original designers did not foresee, which is especially important for databases that might be used for a long time (perhaps several decades). This has made the idea and implementation of relational databases very popular with businesses.
Database normalization
Relations are classified based upon the types of anomalies to which they're vulnerable. A database that is in the
first normal form is vulnerable to all types of anomalies, while a database that is in the domain/key normal form has no modification anomalies. Normal forms are hierarchical in nature. That is, the lowest level is the first normal form, and the database cannot meet the requirements for higher level normal forms without first having met all the requirements of the lesser normal forms.
[David M. Kroenke, ''Database Processing: Fundamentals, Design, and Implementation'' (1997), Prentice-Hall, Inc., pages 130–144]
Logical interpretation
The relational model is a
formal system
A formal system is an abstract structure and formalization of an axiomatic system used for deducing, using rules of inference, theorems from axioms.
In 1921, David Hilbert proposed to use formal systems as the foundation of knowledge in ma ...
. A relation's attributes define a set of
logic
Logic is the study of correct reasoning. It includes both formal and informal logic. Formal logic is the study of deductively valid inferences or logical truths. It examines how conclusions follow from premises based on the structure o ...
al
propositions
A proposition is a statement that can be either true or false. It is a central concept in the philosophy of language, semantics, logic, and related fields. Propositions are the object s denoted by declarative sentences; for example, "The sky ...
. Each proposition can be expressed as a tuple. The body of a relation is a subset of these tuples, representing which propositions are true. Constraints represent additional propositions which must also be true.
Relational algebra
In database theory, relational algebra is a theory that uses algebraic structures for modeling data and defining queries on it with well founded semantics (computer science), semantics. The theory was introduced by Edgar F. Codd.
The main applica ...
is a set of logical rules that can
validly infer conclusions from these propositions.
The definition of a ''tuple'' allows for a unique empty tuple with no values, corresponding to the
empty set
In mathematics, the empty set or void set is the unique Set (mathematics), set having no Element (mathematics), elements; its size or cardinality (count of elements in a set) is 0, zero. Some axiomatic set theories ensure that the empty set exi ...
of attributes. If a relation has a degree of 0 (i.e. its heading contains no attributes), it may have either a cardinality of 0 (a body containing no tuples) or a cardinality of 1 (a body containing the single empty tuple). These relations represent
Boolean truth values. The relation with degree 0 and cardinality 0 is ''False'', while the relation with degree 0 and cardinality 1 is ''True''.
Example
If a relation of Employees contains the attributes ', then the tuple ' represents the proposition: "There exists an employee named ''Alice'' with ID ''1''". This proposition may be true or false. If this tuple exists in the relation's body, the proposition is true (there is such an employee). If this tuple is not in the relation's body, the proposition is false (there is no such employee).
Furthermore, if ' is a key, then a relation containing the tuples ' and ' would represent the following
contradiction:
# There exists an employee with the name ''Alice'' and the ID ''1''.
# There exists an employee with the name ''Bob'' and the ID ''1''.
# There do not exist multiple employees with the same ID.
Under the
principle of explosion, this contradiction would allow the system to prove that any arbitrary proposition is true. The database must enforce the key constraint to prevent this.
Examples
Database
An idealized, very simple example of a description of some
relvars (
relation variables) and their attributes:
* Customer (
Customer ID, Name)
* Order (
Order ID,
Customer ID,
Invoice ID, Date)
* Invoice (
Invoice ID,
Customer ID,
Order ID, Status)
In this
design
A design is the concept or proposal for an object, process, or system. The word ''design'' refers to something that is or has been intentionally created by a thinking agent, and is sometimes used to refer to the inherent nature of something ...
we have three relvars: Customer, Order, and Invoice. The bold, underlined attributes are ''
candidate keys''. The non-bold, underlined attributes are ''
foreign key
A foreign key is a set of attributes in a table that refers to the primary key of another table, linking these two tables. In the context of relational databases, a foreign key is subject to an inclusion dependency constraint that the tuples ...
s''.
Usually one
candidate key is chosen to be called the
primary key and used in
preference over the other candidate keys, which are then called
alternate keys.
A ''candidate key'' is a unique
identifier
An identifier is a name that identifies (that is, labels the identity of) either a unique object or a unique ''class'' of objects, where the "object" or class may be an idea, person, physical countable object (or class thereof), or physical mass ...
enforcing that no
tuple
In mathematics, a tuple is a finite sequence or ''ordered list'' of numbers or, more generally, mathematical objects, which are called the ''elements'' of the tuple. An -tuple is a tuple of elements, where is a non-negative integer. There is o ...
will be duplicated; this would make the
relation into something else, namely a
bag
A bag, also known regionally as a sack, is a common tool in the form of a floppy container, typically made of cloth, leather, bamboo, paper, or plastic. The use of bags predates recorded history, with the earliest bags being lengths of animal s ...
, by violating the basic definition of a
set
Set, The Set, SET or SETS may refer to:
Science, technology, and mathematics Mathematics
*Set (mathematics), a collection of elements
*Category of sets, the category whose objects and morphisms are sets and total functions, respectively
Electro ...
. Both foreign keys and superkeys (that includes candidate keys) can be composite, that is, can be composed of several attributes. Below is a tabular depiction of a relation of our example Customer relvar; a relation can be thought of as a value that can be attributed to a relvar.
Customer relation
If we attempted to ''insert'' a new customer with the ID ''123'', this would violate the design of the relvar since
Customer ID is a ''primary key'' and we already have a customer ''123''. The
DBMS
In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and ana ...
must reject a
transaction such as this that would render the
database
In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
inconsistent by a violation of an
integrity constraint. However, it is possible to insert another customer named ''Alice'', as long as this new customer has a unique ID, since the Name field is not part of the primary key.
''
Foreign key
A foreign key is a set of attributes in a table that refers to the primary key of another table, linking these two tables. In the context of relational databases, a foreign key is subject to an inclusion dependency constraint that the tuples ...
s'' are
integrity constraints enforcing that the
value of the
attribute set is drawn from a ''
candidate key'' in another
relation. For example, in the Order relation the attribute
Customer ID is a foreign key. A ''
join'' is the
operation that draws on
information
Information is an Abstraction, abstract concept that refers to something which has the power Communication, to inform. At the most fundamental level, it pertains to the Interpretation (philosophy), interpretation (perhaps Interpretation (log ...
from several relations at once. By joining relvars from the example above we could ''query'' the database for all of the Customers, Orders, and Invoices. If we only wanted the tuples for a specific customer, we would specify this using a
restriction condition. If we wanted to retrieve all of the Orders for Customer ''123'', we could
query the database to return every row in the Order table with
Customer ID ''123'' .
There is a flaw in our
database design above. The Invoice relvar contains an Order ID attribute. So, each tuple in the Invoice relvar will have one Order ID, which implies that there is precisely one Order for each Invoice. But in reality an invoice can be created against many orders, or indeed for no particular order. Additionally the Order relvar contains an Invoice ID attribute, implying that each Order has a corresponding Invoice. But again this is not always true in the real world. An order is sometimes paid through several invoices, and sometimes paid without an invoice. In other words, there can be many Invoices per Order and many Orders per Invoice. This is a
many-to-many relationship between Order and Invoice (also called a ''non-specific relationship''). To represent this relationship in the database a new relvar should be introduced whose
role
A role (also rôle or social role) is a set of connected behaviors, rights, obligations, beliefs, and norms as conceptualized by people in a social situation. It is an
expected or free or continuously changing behavior and may have a given indi ...
is to specify the correspondence between Orders and Invoices:
OrderInvoice (
Order ID,
Invoice ID)
Now, the Order relvar has a ''
one-to-many relationship'' to the OrderInvoice table, as does the Invoice relvar. If we want to retrieve every Invoice for a particular Order, we can query for all orders where
Order ID in the Order relation equals the
Order ID in OrderInvoice, and where
Invoice ID in OrderInvoice equals the
Invoice ID in Invoice.
Application to relational databases
A
data type
In computer science and computer programming, a data type (or simply type) is a collection or grouping of data values, usually specified by a set of possible values, a set of allowed operations on these values, and/or a representation of these ...
in a relational database might be the set of integers, the set of character strings, the set of dates, etc. The relational model does not dictate what types are to be supported.
Attributes are commonly represented as
columns, tuples as
rows, and relations as tables. A table is specified as a list of column definitions, each of which specifies a unique column name and the type of the values that are permitted for that column. An attribute ''value'' is the entry in a specific column and row.
A database
relvar (relation variable) is commonly known as a base table. The heading of its assigned value at any time is as specified in the table declaration and its body is that most recently assigned to it by an update operator (typically, INSERT, UPDATE, or DELETE). The heading and body of the table resulting from evaluating a query are determined by the definitions of the operators used in that query.
SQL and the relational model
SQL, initially pushed as the
standard language for
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
s, deviates from the relational model in several places. The current
ISO
The International Organization for Standardization (ISO ; ; ) is an independent, non-governmental, international standard development organization composed of representatives from the national standards organizations of member countries.
Me ...
SQL standard doesn't mention the relational model or use relational terms or concepts.
According to the relational model, a Relation's attributes and tuples are
mathematical sets, meaning they are unordered and unique. In a SQL table, neither rows nor columns are proper sets. A table may contain both duplicate rows and duplicate columns, and a table's columns are explicitly ordered. SQL uses a
Null
Null may refer to:
Science, technology, and mathematics Astronomy
*Nuller, an optical tool using interferometry to block certain sources of light Computing
*Null (SQL) (or NULL), a special marker and keyword in SQL indicating that a data value do ...
value to indicate missing data, which has no analog in the relational model. Because a row can represent unknown information, SQL does not adhere to the relational model's ''Information Principle''.
Set-theoretic formulation
Basic notions in the relational model are ''
relation names'' and ''attribute names''. We will represent these as strings such as "Person" and "name" and we will usually use the variables
and
to range over them. Another basic notion is the set of ''atomic values'' that contains values such as numbers and strings.
Our first definition concerns the notion of ''tuple'', which formalizes the notion of row or record in a table:
;
Tuple
In mathematics, a tuple is a finite sequence or ''ordered list'' of numbers or, more generally, mathematical objects, which are called the ''elements'' of the tuple. An -tuple is a tuple of elements, where is a non-negative integer. There is o ...
: A tuple is a
partial function
In mathematics, a partial function from a set to a set is a function from a subset of (possibly the whole itself) to . The subset , that is, the '' domain'' of viewed as a function, is called the domain of definition or natural domain ...
from attribute names to atomic values.
; Header
: A header is a finite set of attribute names.
;
Projection
: The projection of a tuple
on a
finite set
In mathematics, particularly set theory, a finite set is a set that has a finite number of elements. Informally, a finite set is a set which one could in principle count and finish counting. For example,
is a finite set with five elements. Th ...
of attributes
is
.
The next definition defines ''relation'' that formalizes the contents of a table as it is defined in the relational model.
;
Relation
: A relation is a tuple
with
, the header, and
, the body, a set of tuples that all have the domain
.
Such a relation closely corresponds to what is usually called the extension of a predicate in
first-order logic
First-order logic, also called predicate logic, predicate calculus, or quantificational logic, is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantified variables over ...
except that here we identify the places in the predicate with attribute names. Usually in the relational model a
database schema
The database schema is the structure of a database described in a formal language supported typically by a relational database management system (RDBMS). The term "wikt:schema, schema" refers to the organization of data as a blueprint of how the ...
is said to consist of a set of relation names, the headers that are associated with these names and the
constraints that should hold for every instance of the database schema.
; Relation universe
: A relation universe
over a header
is a non-empty set of relations with header
.
; Relation schema
: A relation schema
consists of a header
and a predicate
that is defined for all relations
with header
. A relation satisfies a relation schema
if it has header
and satisfies
.
Key constraints and functional dependencies
One of the simplest and most important types of relation
constraints is the ''key constraint''. It tells us that in every instance of a certain relational schema the tuples can be identified by their values for certain attributes.
;
Superkey
A superkey is a set of column headers for which the values of those columns concatenated are unique across all rows. Formally:
: A superkey is written as a finite set of attribute names.
: A superkey
holds in a relation
if:
:*
and
:* there exist no two distinct tuples
such that