# 1 Introduction & Relational Model

## Data Models

### Hierarchical Model

- one-to-many relationships
- tree

### Network Model

- many numbers of many-to-many relationships
- introduced pointers
- acyclic directed graph
- records (vertices) and sets (edges)
- several items with the same kind of records will use linked lists

### Relational Model

- many-to-many relationships
- decomposing many-to-many relationship into two one-to-many relationships using intersection record

## Relational Model

### General Terminology

- tuple: a row in a table (usually considered to be unordered and non-identical)
- relation: a two-dimensional table of data
- attribute: a column in a table (usually considered as unordered)
- domain: the set of permissible values for a given attribute
- schema: consisting of the name of the relation followed by its attributes
- component: an atomic single value of an attribute (structure NG)
- instance of a schema: the current contents of a relation

### Keys in Relational Model

__primary key__: one key that uniquely identify tuples in the relation- secondary key: any key which is not primary
- superkey: any set of attributes which satisfies uniqueness condition
- key: a minimal superkey, no proper subset of the key is a superkey

## Relational Algebra

### ordinary set operations

#### set-level

#### projection

the relation obtained by selecting attributes from the relation and remove others

#### selection

$\sigma_C(R)$

the set of tuples in R which satisfy the condition C

#### join

Let and be two relations that has some attributes in common.

Then the **natural join** of R and S is:

The **theta join** of R and S on condition C is: the set of elements of the cartesian product which satisfy the join condition C.

#### renaming

rename R to S, with attributes rename to .

### bags

A bag is similar to a set, but allows multiple occurrences of an element.

#### duplicate elimination

If R is a relation then denotes duplicate elimination.

#### aggregation

operators: COUNT, SUM, MAX, MIN, AVG

Example: MAX(width)(Artworks)

#### grouping

If R is a relation, then an expression using grouping is:

Example:

#### extended projection

If R is a relation, then an expression using extended projection is:

Example:

#### sorting

Ordered by primary sort key then secondary sort key and so on.

#### outerjoin

Sometimes there is no matching tuple for some tuples and they got disappeared in the joined relation. So outerjoin would keep them leave the unmatched part a null value .

For R and S:

- in left outerjoin, only dangling tuples from R are added
- in right outerjoin, only dangling tuples from S are added

You could also define a outer theta-join using the same way as before.