START OF DAY 8 Reading: Chap. 2 & 9. Relational Data Model

Preview:

Citation preview

START OF DAY 8Reading: Chap. 2 & 9

Relational Data Model

Relational Database

A persistent collection of relationsInformation about various kinds of objects (persons, places, things, events)

Each relation holds information about various kinds of objects (persons, places, things, events, etc.)

Each relation, or table, is characterized by a set of attributes or properties from a domain

e.g., person(SSN, Name, Address, Phone)

Each individual object, or record, is a tuple of valuese.g., (123-45-6789, Pat Carter, 12 Main, 555-5555)

Set of records make up the relation, i.e., subset of the cross-product of the attributes’ domains

Assume DB exists – in reality, create tables, insert tuples, etc.

DBMS – manage storage, integrity/security, crash recovery, etc.

StudentID Name Address Phone

12345 C. Brown 12 Apple St. 555-1234

67890 L. Van Pelt 34 Pear Ave. 555-5678

22222 P. Patty 56 Grape Blvd. 555-9999

33333 Snoopy 12 Apple St. 555-1234

Course StudentID Grade

CS101 12345 A

CS101 67890 B

EE200 12345 C

EE200 22222 B+

EE200 33333 B

CS101 33333 A-

PH100 67890 C+

Course Day Hour

CS101 M 9AM

CS101 W 9AM

CS101 F 9AM

EE200 Tu 10AM

EE200 W 1PM

EE200 Th 10AM

PH100 Tu 11AM

Course Prerequisite

CS101 CS100

EE200 EE005

EE200 CS100

CS120 CS101

CS121 CS120

CS205 CS101

CS206 CS121

CS206 CS205

Course Room

CS101 Turing Aud.

EE200 25 Ohm Hall

PH100 Newton Lab.

Relational Database Examplesnap cr

cdh csgcp

Relational Schemas

Each table has a schemaNameSet of attributesDomain for each attribute

Example: Names: snap, cp, cdh, cr, csgAttributes: table headers

Domains:studentID: integerall the rest are strings, but we could be more

specific (e.g. time, day, grade)

Relational Tables

Tables consist of n-tuples, where n is the arity or degree of the relation (i.e., the number of attributes)

Each n-tuple t D1 D2 … Dn, where the Di’s are the domainse.g., a 3-tuple t of cdh is an element string string string

or string day time or course day time depending on how specific we make our domains

A table is a set of tuples, all with the same schemae.g., cdh Dcourse Dday Dhour

Tables & Keys

Because a table is a set of tuples, there are no duplicates

There is always a set of attributes whose values uniquely identify a tuple (even if it is all of them)

A set of attributes whose values always uniquely identify a tuple constitutes a key

Typically, one or two attributes make up a key

Keys must be declared: we cannot assume uniquenesse.g., Name is not a key; there could be another C. Brown

Some systems add a tuple identifier as the key

Keys ExamplesTable Keysnap StudentID

Name, Address, Phone (possible key?)

cp Course Prerequisite

cdh Course Day HourCan a course meet twice on the same day?If not: Course Day

cr Course RoomDoes a course always meet in the same room?If so: Course

csg Course StudentID

Predicates and Tuples

A table name for tuples of arity n is an n-place predicatecdh('CS101','M','9AM')Asserts that CS101 meets on Monday at 9:00 am

Predicates give each tuple a meaning in the ordinary sense of predicatesThe subset of D1 D2 … Dn present in the database are

those assigned T; all others are assigned F (CWA)Interpretation:

DomainFor each predicate and every substitution, T or F

Every relation is a set, and every set is a predicate.

Hence every relation is a predicate (and vice-versa)

Database TuplesDatabase tuples (strictly speaking) are not true

subsets of D1 D2 … Dn because we can alter the column order if we do so “correctly”

More properly defined, a tuple in a relation is a set of attribute-value pairse.g. {(Course, 'CS101'), (Day, 'M'), (Hour, '9AM') }

= {(Day, 'M'), (Course, 'CS101'), (Hour, '9AM') }Normally, we factor out the attribute and fix the orderImplication: we can interchange columns

cr = Course Room = Room Course CS101 Turing Aud. Turing Aud.CS101

EE200 25 Ohm Hall 25 Ohm HallEE200

PH100 Newton Lab. Newton Lab.PH100

Relational Algebra

Relational Algebra

What is an algebra?a pair: (set of values, set of operations)

ADT type Class Object

e.g., stack: (set of all stacks, {pop, push, top, …})

integer: (set of all integers, {+, -, *, })

What is relational algebra?(set of relations, set of relational operators)

Operators: , , , , , , , ||

Relational Algebra is Closed

Closed: all operations produce values in the value set(reals, {+, *, }) closed

(reals, {+, *, , }) not closed (divide by 0)

(reals, {+, *, >}) not closed (T/F not in value set)

(computer reals, {+, *, }) not closed (overflow, roundoff)

(relations, relational operators) closed

Implication: we can always nest (or compose) relational operators; can’t for algebras that are not closed.

Set Operations: , , and

Relations are sets; thus set operations work.

Examples:R = A B 1 2 2 2 2 3

S = A B 2 2 2 3 4 2 5 5

RS = A B 1 2 2 2 2 3 4 2 5 5

RS = A B 2 2 2 3

RS = A B 1 2

SR = A B 4 2 5 5

Set Operations (cont’d)

Definition: schema(R) = {A, B} = AB, i.e. the set of attributes

We sometimes write R(AB) to mean the relation R with schema AB.

Definition: union compatibleschema(R) = schema(S)required precondition for , ,

Definitions: R S = { t | t R t S}R S = { t | t R t S}R S = { t | t R t S}

Tuple Restriction: [X]

Restriction is a tuple operator (not a relational operator).t[X] restricts tuple t to the attributes in X.

A B Ct = 1 2 3

t[A] = (1) t[AC] = (1,3)

Renaming:

ABR renames attribute A to be B in R

A must be in schema(R)B must not be in schema(R)

Example: let

CBQ = A B 2 2 3 2

RCBQ = A B 1

2 2

2 2

3 3

2

R = A B 1 2 2 2 2 3

Q = A C 2 2 3 2

• But with :

RQ = ?Not union compatible

Renaming (cont’d)

Q = ABR renames attribute A to B; the result is Q.

Precondition:A schema(R)B schema(R)

Postcondition:schema(Q) = (schema(R) {A}) {B}Q = {t' | t (tR t' = (t – {(A, t[A])}) {(B, t[A])})}

R = {{(A,1), (C,2)} {(A,2), (C,2)}}

Q = ABR = {{(B,1), (C,2)}

{(B,2), (C,2)}}

Selection: The selection operation selects the tuples that satisfy

a condition.

A=1R = A B 1 2

B=2R = A B 1 2 2 2

A=2B2R = A B 2 2

2 3A=3R = A B Note: empty, but still retains the schema

PR = { t | t R P(t) }

• Precondition: each attribute mentioned in P must be in schema(R).

• Postcondition: PR = { t | t R P(t) }

schema(PR) = schema(R)

Meaning: apply predicate P to tuple t by substituting into P appropriate t values.

R = A B 1 2 2 2 2 3

Projection: The projection operation restricts tuples in a

relation to those designated in the operation.

R = A B 1 2 2 2 2 3Q = A B C 1 1 1 2 1 1 3 4 5

AR = A 1 2

BR = B 2 3

BCQ = B C 1 1 4 5

ABR = R = A,BR = {A,B}R

Precondition: X schema(R)

Postcondition: XR = { t' | t (t R t' = t[X]) }schema(XR) = X

Practice ExercisesPE1

Using the following database, compute:

Trail Name Characteristics

Activity2 Description=Waterfall Recreational features

Feature=Vista Characteristics

Trails Name=North Fork and Forest-ID=2 Trails

Cross Product:

Standard cartesian product adapted for relational algebra

R = A B 1 2 2 2

S = C D 1 1 2 2 3 3

R S = A B C D 1 2 1 1 1 2 2 2 1 2 3 3 2 2 1 1 2 2 2 2 2 2 3 3

Cross Product (cont’d)

R = A B 1 2 = t' 2 2

S = C D 1 1 2 2 3 3 = t''

Precondition: schema(R) schema(S) = Postcondition: R S = { t | t' t''(t' R t'' S t = t' t'')}

schema(R S) = schema(R) schema(S)

t' = { (A,1), (B,2) }

t'' = { (C,3), (D,3) }

t' t'' = { (A,1), (B,2), (C,3), (D,3) }

Cross Product (cont’d)

R = A B 1 2 2 2

S = C A 1 1 2 2 3 3

What if R and S have the same attribute, e.g. A?

Can’t do cross productSolution: RenameAAS

R AAS = A B C A 1 2 1 1 1 2 2 2 1 2 3 3 2 2 1 1 2 2 2 2 2 2 3 3

Natural Join: ||

R = A B 1 2 2 2

S = B C 1 2 2 1 3 2

R || S = A B C 1

2 1 2 2 1

(R )

Cross Product A B

1 2 1 2 1 2 2 2

1 2 2 2

2 1 2 2

3 2

R || S = ABC

Projection

B=B'

Selection Renaming

BB'S

B' C1 22 13 2

1 2

2 2 1

1

Natural Join (cont’d)In general, we can equate 0, 1, 2, or more

attributes using || .A join is defined as:

schema (R || S) = schema(R) schema(S)

R || S = {t | t[schema(R)] R t[schema(S)]

S}

There are no preconditions join always works.

Natural Join (cont’d)

R = A B 1 1 2 3 4 1

S = C D 1 1 1 5

R || S = A B C D 1 1

1 1 1 1

1 5 2 3

1 1 2 3

1 5 4 1

1 1 4 1

1 5

R = A B 1 2 2 2 2 3

S = B C 1 1 2 2 3 3

R || S = A B C 1 2

2 2 2

2 2 3

3R = A B C 1 2 3 2 2 4 2 3 5

S = A B D 1 1 1 2 2 2 2 2 1

R || S = A B C D 2

2 4 2 2

2 4 1

0 attributes in common (full cross product)

1 attribute in common

2 attributes in common

Practice ExercisesPE1

Using the following database, compute:

Department COURSE|x| Semester SECTION

Department=Math COURSE |x| Instructor=Anderson SECTION

Credit_hours=4 COURSE|x| Year=05 SECTION

END OF DAY 8Homework: #12

Recommended