ER & EER To Relational Mapping
ER & EER To Relational Mapping
Relational Mapping
Ashish Kumar
Dept. of CSE
Manipal University Jaipur
1
Step 1:
For each regular entity type E
Create a relation R that includes all the
simple attributes of E.
Include all the simple component
attributes of composite attributes.
Choose one of the key attributes of E as
primary key for R.
If the chosen key of E is composite, the
set of simple attributes that form it will
together form the primary key of R.
2
3
4
Step 2:
For each weak entity type W with owner
entity type E
Create a relation R, and include all simple
attributes and simple components of
composite attributes of W as attributes of R.
In addition, include as foreign key attributes
of R, the primary key attribute(s) of the
relation(s) that correspond to the owner
entity type(s).
5
6
7
Step 3:
For each binary 1:1 relationship type R
Identify the relations S and T that
correspond to the entity types participating
in R. Choose one of the relations, say S, and
include as foreign key in S the primary key
of T.
It is better to choose an entity type with
total participation in R in the role of S.
Include the simple attributes of the 1:1
relationship type R as attributes of S.
If both participations are total, we may
merge the two entity types and the8
9
10
Step 4:
For each regular binary 1:N relationship
type R
Identify the relation S that represents the
participating entity type at the N-side of
the relationship type.
Include as foreign key in S the primary
key of the relations T that represents the
other entity type participating in R.
Include any simple attributes of the 1:N
relationship type as attributes of S.
11
12
13
Step 5:
For each binary M:N relationship type R
Create a new relation S to represent R.
Include as foreign key attributes in S the
primary keys of the relations that
represent the participating entity types;
their combination will form the primary
key of S.
Also, include any simple attributes of the
M:N relationship type as attributes of S.
14
15
16
Step 6:
For each multi-valued attribute A
Create a new relation R that includes an
attribute corresponding to A plus the
primary key attribute K (as a foreign key
in R) of the relation that represents the
entity type or relationship type that has A
as an attribute.
The primary key of R is the combination of
A and K. If a multi-valued attribute is
composite, we include its components.
17
18
19
Step 7:
For each n-ary relationship type R, n>2
Create a new relation S to represent R.
Include as foreign key attributes in the S
the primary keys of the relations that
represent the participating entity types.
Also include any simple attributes of the
n-ary relationship types as attributes of S.
The primary key for S is usually a
combination of all the foreign keys that
reference the relations representing the
participating entity types.
20
Step 7:
However, if the participation constraint
(min,max) of one of the entity types E
participating in the R has max =1, then
the primary key of S can be the single
foreign key attribute that references the
relation E’ corresponding to E
This is because , in this case, each entity e
in E will participate in at most one
relationship instance of R and hence can
uniquely identify that relationship
instance.
21
22
23
Step 8:
To convert each super-class/subclass
To convert this type of relationship into a
relational schema you must use one of the
four options available.
24
Option 8A (multiple relation option):
Create a relation L for C with attributes
Attrs(L) = {K, A1, A2, …, An} and
PK(L) = K.
Create a relation Li for each subclass Si, 1
< i < m, with the attributes
ATTRS(Li) = {K} U {attributes of Si}
and
PK(Li) = K.
This option works for any constraints:
disjoint or overlapping; total or partial.
25
26
27
Option 8B (multiple relation option):
Create a relation Li for each subclass Si, 1
< i < m, with
ATTRS(Li) = {attributes of Si} U {K, A1,
A2, …, An}
PK(Li) = K
This option works well only for disjoint and
total constraints.
If not disjoint, redundant values for inherited
attributes.
If not total, entity not belonging to any sub-class
is lost.
28
29
30
Option 8c (Single Relation Option)
Create a single relation L with attributes
Attrs(L) = {K, A1, …, An} U
{attributes of S1} U… U
{attributes of Sm} U {T}
and PK(L)=K
This option is for specialization whose
subclasses are DISJOINT, and T is a type
attribute that indicates the subclass to which
each tuple belongs, if any. This option may
generate a large number of null values.
Not recommended if many specific attributes
are defined in subclasses (will result in many31
32
Option 8d (Single Relation Option)
Create a single relation schema L with
attributes
Attrs(L) = {K, A1, …, An} U
{attributes of S1} U… U
{attributes of Sm} U {T1,
…, Tn}
and PK(L)=K
This option is for specialization whose
subclasses are overlapping, and each Ti, 1
< i < m, is a Boolean attribute indicating
whether a tuple belongs to subclass Si.
33
34
Thank You
35