Relational Model - Assignment Point

## Relational Model

Subject: Management | Topics:

Relational Model:

The relational model is the conceptual basis of relational databases. Proposed by E.F. Codd in 1969, it is a method of structuring data using relations, which are grid-like mathematical structures consisting of columns and rows. Codd proposed the relational model for IBM, but he had no idea how extremely vital and influential his work would become as the basis of relational databases.

Attribute Types:

• Each attribute of a relation has a name
• The set of allowed values for each attribute is called the domain of the attribute
• Attribute values are (normally) required to be atomic; that is, indivisible
• E.g. the value of an attribute can be an account number,
• but cannot be a set of account numbers
• Domain is said to be atomic if all its members are atomic
• The special value null  is a member of every domain
• The null value causes complications in the definition of many operations
• We shall ignore the effect of null values in our main presentation and consider their effect later
Relation Schema
Formally, given domains D1, D2, …. Dn a relation r is a subset of
D1 x  D2  x … x Dn
Thus, a relation is a set of n-tuples (a1, a2, …, an) where each ai  Î Di
Schema of a relation consists of
lattribute definitions
name
type/domain
lintegrity constraints
Relation Instance
The current values (relation instance) of a relation are specified by a table
An element t of r is a tuple, represented by a row in a table
Order of tuples is irrelevant (tuples may be stored in an arbitrary order)
Keys:
Let K Í R
K is a superkey of R if values for K are sufficient to identify a unique tuple of each possible relation r(R)
by “possible r ” we mean a relation r that could exist in the enterprise we are modeling.
Example:  {customer_name, customer_street} and
{customer_name}
are both superkeys of Customer, if no two customers can possibly have the same name
In real life, an attribute such as customer_id would be used instead of customer_name to uniquely identify customers, but we omit it to keep our examples small, and instead assume customer names are unique.