1 CSE 880: Database Systems Lecture : EER to Relational Mapping Reference: Read Chapter 9 of the...

Post on 25-Dec-2015

218 views 2 download

Tags:

Transcript of 1 CSE 880: Database Systems Lecture : EER to Relational Mapping Reference: Read Chapter 9 of the...

1

CSE 880: Database Systems

Lecture : EER to Relational Mapping

Reference:

Read Chapter 9 of the textbook

2

EER to Relation Mapping

Mapping of superclass/subclass relationships Mapping of shared subclasses Mapping of union types (categories)

3

Mapping of Superclass/Subclasses

Let R be the superclass {S1, S2,….,Sm} are the subclasses

– Each subclass can have its own local attributes

R

S1 S2 Sm

ka1

a2

b1

b2

c

4

EER to Relation Mapping

Step 8: 4 possible approaches– Option 8A: Multiple relations – Superclass and subclasses

– Option 8B: Multiple relations – Subclass relations only

– Option 8C: Single relation with one type attribute

– Option 8D: Single relation with multiple type attributes

5

Mapping EER Constructs to Relations

Option 8A: Multiple relations - superclass and subclass– Create superclass relation with attributes {k,a1,a2} and primary key

(PK) = k

– Create a relation Si for each subclass Si, with attributes {k} U {attributes of Si} with PK = k.

R

S1 S2 Sm

ka1

a2

b1

b2

c1

k a1 a2

R

k c1 c2

Smc2

k b1 b2

S1

6

Example

7

MySQL Workbench Example

Click on 1-1 identifying relationship type

Click on subclass first before superclass. Repeat this for all 3 subclasses.

8

MySQL Workbench Example

9

Mapping EER Constructs to Relations

Option 8B: Multiple relations –subclass relations only– Create a relation for each subclass Si, with the attributes of Si

and the superclass

– Works for total specialization (i.e., every entity in the superclass must belong to (at least) one of the subclasses)

R

S1 S2 Sm

ka1

a2

b1

b2

c1

c2

a1 a2k c1 c2

Sm

a1 a2k b1 b2

S1

10

Example

Tonnage

Total specialization

11

Limitation of previous two approaches

Query: What does John Doe do as an employee?

To answer this query, we need to scan all three subclass relations, which is inefficient!

12

Option 8C: Single relation – with one type attribute (t)– Create a single relation with attributes {k,a1,…an} U {attributes of

S1} U…U {attributes of Sm} U {t} with primary key, PK = k

– The attribute t is called a type (or discriminating) attribute

– This option works for disjoint specialization

EER to Relations Mapping

d

C

S1 S2 Sm

ka1

a2

b1

b2

c1

c2

t a1 a2k b1 b2

R

c1 c2… t

13

Example

EngType

d

14

EER to Relations Mapping

Option 8D: Single relation – with multiple type attributes– Create a single relation with attributes {k,a1,…an} U {attributes of

S1} U…U {attributes of Sm} U {t1, t2,…,tm} and PK = k

– ti is a Boolean attribute indicating whether a tuple belongs to Si.

– This option works for overlapping specialization

o

C

S1 S2 Sm

ka1

a2

b1

b2

c1

c2

a1 a2k b1 b2

R

c1 c2… …t1 tm

15

Example

16

So which option is better?

Depends on applications; must consider tradeoff:– Too many relations (options 8A and 8B)

Inefficient query processing

– Single relation (options 8C and 8D) Lots of nulls; may “lose” some meaningful relationships

If everything is mapped to the Employee relation, we lose

the relationship between hourly employee and trade

union

17

EER to Relations Mapping

Mapping of Shared Subclasses (Multiple Inheritance)– A shared subclass is a subclass of several superclasses,

indicating multiple inheritance. These superclasses must have the same key attribute

– Can apply any of the four options (subject to their restrictions – total/partial, overlapping/disjoint)

18

o

Example

STUDENT_ASSISTANT is a shared subclass of the EMPLOYEE and STUDENT entity types

19

Example

Since there are usually separate queries for employees, alumni, and students, we can use options 8A or 8B

– Relations for option 8A: Person, Employee, Alumnus, Student

– Relations for option 8B: Employee, Alumnus, Student

20

Example

o

Suppose we want to use option 8C and 8D to group all employees into a single relation called EMPLOYEE

21

Example

o

Suppose we want to use option 8C to group all students into a single relation called STUDENT

22

Putting it all together…