Cb3401 Unit 2
Cb3401 Unit 2
Cb3401 Unit 2
ER Diagrams
An E-R diagram can express the overall logical structure of a database graphically.E-R diagrams are
used to model real-world objects like a person, a car, a company and the relation between these
real-world objects.
Features of ER model
i) E-R diagrams are used to represent E-R model in a database, which makes them easy to be
converted into relations (tables).
ii) E-R diagrams provide the purpose of real-world modeling of objects which makes
them intently useful.
iii) E-R diagrams require no technical knowledge and no hardware support. iv) These
diagrams are very easy to understand and easy to create even by a naive user. v) It gives a
standard solution of visualizing the data logically.
Relationship : Rhombus
is used to setup
relationships between
two or more entities.
Attribute : Each entity
has a set of properties.
These properties of each
entity are termed as
attributes. For example,
a car entity would be
described by attributes
such as price,
registration number,
model number, color etc
Derived attribute :
Derived attributes are
those which are derived
based on other
attributes, for example,
age can be derived from
date of birth.
To represent a derived
attribute, another
dotted ellipse is created
inside the
main ellipse
Multivalued attribute :
An attribute that can
hold multiple values is
known as multivalued
attribute. We represent
it with double ellipses in
an E-R Diagram. E.g. A
person can have more
than one phone
numbers so the phone
number attribute is
multivalued.
Total participation :
Each entity is involved in
the relationship. Total
participation is
represented by double
lines.
i) One to one relation : When entity A is associated with at the most one entity B then it shares one
to one relation. For example - There is one project manager who manages only one project.
iii) Many to many : When more than one entities are associated with more than one entities. For
example -Many teachers can teach many students.
Ternary Relationship
The relationship in which three entities are involved is called ternary relationship. For example -
Binary and Ternary Relationships
• Although binary relationships seem natural to most of us, in reality it is sometimes
necessary to connect three or more entities. If a relationship connects three entities, it is
called ternary or "3-ary."
• Ternary relationships are required when binary relationships are not sufficient to
accurately describe the semantics of an association among three entities.
• For example - Suppose, you have a database for a company that contains the
entities, PRODUCT, SUPPLIER, and CUSTOMER. The usual relationships might be PRODUCT/
SUPPLIER where the company buys products from a supplier - a normal binary relationship.
The intersection attribute for PRODUCT/SUPPLIER is wholesale_price
• Now consider the CUSTOMER entity, and that the customer buys products. If all
customers pay the same price for a product, regardless of supplier, then you have a simple
binary relationship between CUSTOMER and PRODUCT. For the CUSTOMER/ PRODUCT
relationship, the intersection attribute is retail_price.
A binary relationship of PRODUCT and CUSTOMER
• Single ternary relation : Now consider a different scenario. Suppose the customer
buys products but the price depends not only on the product, but also on the supplier.
Suppose you needed a customerID, a productID, and a supplierID to identify a price. Now
you have an attribute that depends on three things and hence you have a relationship
between three entities (a ternary relationship) that will have the intersection attribute,
price.
Ternary relation
• A weak entity set has one or more many-one relationships to other (supporting)
entity sets.
• The key for a weak entity set is its own underlined attributes and the keys for the
supporting entity sets. For example - player-number and team-name is a key for Players.
1 It has its own primary key. It does not have sufficient attribute
to form a primary key on its own.
4. The member of strong entity set The member of weak entity set is
is called as dominant entity set called subordinate entity set.
6. The primary key is one of the The primary key of weak entity set
attributes which uniquely is a combination of partial key and
identifies its member. primary key of the strong entity
set.
Functional Dependencies
Definition : Let P and Q be sets of columns, then: P functionally determines Q, written P → Q if and
only if any two rows that are equal on (all the attributes in) P must be equal on (all the attributes in)
Q.
R N
1 AAA
2 BBB
3 CCC
4 DDD
5 EEE
R N
1 AAA
2 BBB
3 CCC
1 XXX
2 YYY
In above table for RollNumber 1 we are getting two different names - “AAA” and “XXX”. Hence here
it does not hold the functional dependency.
The closure set of functional dependency can be computed using basic three rules which are also
called as Armstrong’s Axioms.
These are as follows -
i) Reflexivity : If X
In addition to above axioms some additional rules for computing closure set of functional
dependency are as follows -
• Union :
• Decomposition :
Example 2.8.1 Compute the closure of the following set of functional dependencies for a relation
scheme R(A,B,C,D,E), F={A->BC, CD->E, B->D, E->A)
A->BC CD->E
B->D E->A
Step 2 :{CDE}
Step 3 :{CDEA}
Step 4 :{CDEAB}
Solution : For finding the closure of functional dependencies - Refer example 2.8.1.
We can identify candidate from the given relation schema with the help of functional dependency.
For that purpose we need to compute the closure set of attribute. Now we will find out the closure
set which can completely identify the relation R(A,B,C,D).
(B)+ = {BD}
(C)+ = {C}
(D)+ = {D}
(E)+ = {ABCDE}
(CD)+ = {ABCDE}
Clearly, only (A)+,(E)+ and (CD)+ gives us {ABCD} i.e. complete relation R. Hence these are the
candidate keys.
Fc = F repeat
c .
Example 2.8.3 Consider the following functional dependencies over the attribute set R(ABCDE) for
finding minimal cover FD = {A->C, AC->D, B->ADE} Solution :
Step 1 : Split the FD such that R.H.S contain single attribute. Hence we get
A->C
AC->D
B->A
B->D
B->E
Step 2 : Find the redundant entries and delete them. This can be done as follows - o For A->C : We
find (A)+ by assuming that we delete A->C temporarily. We get (A)+={A}. Thus from A it is not possible
to obtain C by deleting A->C.
This means we can not delete A->C o For AC->D : We find (AC)+ by assuming that we delete AC->D
temporarily. We get (AC)+={AC}. Thus by such deletion it is not possible to obtain D. This means we
can not delete AC->D
o For B->A : We find (B)+ by assuming that we delete B->A temporarily. We get
(B)+={BDE}. Thus by such deletion it is not possible to obtain A. This means we can not
delete B->A
o For B->D : We find (B)+ by assuming that we delete B->D temporarily. We get
(B)+={BEACD}. This shows clearly that even if we delete B->D we can obtain D. This
means we can delete B->A. Thus it is redundant.
o For B->E : We find (B)+ by assuming that we delete B->E temporarily. We get
(B)+={BDAC}. Thus by such deletion it is not possible to obtain E. This means we can
not delete B->E To summarize we get now
A->C
AC->D
B->A
B->E
Consider AC->D. Here we can split A and C. For that we find closure set of A and C.
(A)+ = (AC)
(C)+ = (C)
Thus C can be obtained from both A as well as C. That also means we need not have to have AC on
L.H.S. Instead, only A can be allowed and C can be eliminated. Thus after simplification we get
A->D
A->C
A->D
B->A
B->E
Step 3 : The simplified L.H.S. and R.H.S can be combined together to form
A->CD
B->AE
i) Union of attributes of R1 and R2 must be equal to attribute of R. Each attribute of R must be either
in R1 or in R2. Att(R1) Att(R2) = Att(R) ii) Intersection of attributes of R1 and R2 must not be NULL.
Att(R1) ∩ Att(R2) ≠ Φ
iii) Common attribute must be a key for at least one relation (R1 or R2) Att(R1) ∩ Att(R2) ->
Att(R1) or Att(R1) ∩ Att(R2) -> Att(R2)
Example 2.10.1 Consider the following relation R(A,B,C,D)and FDs A->BC, is the decomposition of R
into R1(A,B,C), R2(A,D). Check if the decomposition is lossless join or not.
Solution :
Step 1 : Here Att(R1) Att(R2) = Att(R) i.e R1(A,B,C) R2(A,D)=(A,B,C,D) i.e R. Thus first condition
gets satisfied.
Step 2 :
satisfied.
Example Consider the following relation R(A,B,C,D,E,F) and FDs A->BC, C->A,
D->E, F->A, E->D is the decomposition of R into R1(A,C,D), R2(B,C,D),
and R3(E,F,D).
Check for
lossless.
Solution :
Step 1 : R1 R2 R3=R. Here the first condition for checking lossless join is satisfied as (A,C,D) (B,C,D)
(E,F,D)={A,B,C,D,E,F} which is nothing but R.
Step 2 :
gets satisfied.
(D)+={D,E} which is neither complete set of attributes of R2 or R3.[Note that F is missing for being
attribute of R3].
Hence it is not lossless join decomposition. Or in other words we can say it is a lossy
decomposition.
Example 2.10.3 Suppose that we decompose schema R=(A,B,C,D,E) into (A,B,C) (C,D,E) Show that it
is not a lossless decomposition.
Solution :
Step 1 : Here we need to assume some data for the attributes A, B, C, D, and E. Using this data we
can represent the relation as follows –
Relation R
A B C D E
a 1 x p q
b 2 x r s
Relation R1 = (A,B,C)
A B C
a 1 x
b 2 x
Relation R2 = (C,D,E)
C D E
x p q
x r s
Step 2 : Now we will join these tables using natural join, i.e. the join
based on A B C D E common attribute C. We get R1 R2 as
a 1 x p q
a 1 x r s
Here we get more rows or tuples than original relation R
b 2 x r s
1) There is no redundancy of data (all data is stored in only one place), and
2) data dependencies are logical (all related data items are stored together)
• The normalization is important because it allows database to take up less disk space.
ii) Values stored in a column should be of the same domain iii) All the columns in a table
should have unique names. iv) And the order in which data is stored, does not matter. Consider
following Student table
Student
1 AAA 11111
22222
2 BBB 33333
3 CCC 44444
55555
As there are multiple values of phone number for sid 1 and 3, the above table is not in
1 AAA 11111
1 AAA 22222
2 BBB 33333
3 CCC 44444
3 CCC 55555
(AB)+ = {ABCD}={R}
Hence {A,B} are prime attributes and {C,D} are non prime attribute. In A->C, the non prime attribute
C is dependent upon A which is actually a part of candidate key AB. Hence due to A->C we get partial
functional dependency.
• Example : Consider a Relation R={A,B,C,D} and candidate key as AB, the Prime
attributes : A, B
For a table to be in the Second Normal Form, following conditions must be followed i) It should be in
the First Normal form.
For example : Consider following table in which every information about a the Student is maintained
in a table such as student id(sid), student name(sname), course id(cid) and course name(cname).
Student_Course
1 AAA 101 C
3 CCC 101 C
This table is not in 2NF. For converting above table to 2NF we must follow the following steps -
Step 2 : Here sname and sid are associated similarly cid and cname are associated with each other.
Now if we delete a record with sid=2, then automatically the course C++ will also get deleted. Thus,
sid->sname or cid->cname is a partial functional dependency, because {sid,cid} should be
essentially a candidate key for above table. Hence to bring the above table to 2NF we must
decompose it as follows :
cid cname
Here candidate key is
Third Normal Form 101 C cid
X->Y
Y->Z
Superkey : A super key is a set or one of more columns (attributes) to uniquely identify rows in a
table.
Candidate key : The minimal set of attribute which can uniquely identify a tuple is known as
candidate key. For example consider following table
101 1 AAA
102 2 BBB
103 3 CCC
104 4 DDD
Superkeys
• {RegID}
• {RegID, RollNo}
• {RegID,Sname}
• {RollNo,Sname}
• {RegID, RollNo,Sname}
Candidate Keys
• {RegID}
• {RollNo}
i) It is in the Second Normal form.(i.e. it does not have partial functional dependency) ii) It doesn't
have transitive dependency.
Or in other words
In other words 3NF can be defined as : A table is in 3NF if it is in 2NF and for each functional
dependency X-> Y at least one of the following conditions hold : i) X is a super key of table ii) Y is a
prime attribute of table
Here
The above denotes the transitive dependency. Hence above table is not in 3NF. We can convert it
into 3NF as follows :
Student
sid sname zipcode
1 AAA 11111
2 BBB 22222
3 CCC 33333
4 DDD 44444
5 EEE 55555
Zip
Solution : Let,
As
As
we get
s also true
Similarly ∵
R1 = (A, B, C)
R2 = (A, D, E, I, J)
R3 = (B, F, G, H)
R1 = (A, B, C)
R2 = (A, D, E)
R3 = (D, I, J)
R4 = (B, E)
R5 = (E, G, H).
University Questions
1. What is database normalization ? Explain the first normal form, second normal
form and third normal form. AU : May-18, Marks 13; Dec.-15, Marks
16
2. What are normal forms. Explain the types of normal form with an example.
AU :
Dec.-14, Marks 16
Dependency Preservation
• Definition : A Decomposition D = {R1, R2, R3….Rn} of R is dependency preserving for
a set F of Functional dependency if - (F1 F2 … Fm) = F.
• If decomposition is not dependency-preserving, some dependency is lost in the
decomposition.
Example 2.10.4 Consider the relation R (A, B, C) for functional dependency set {A -> B and B -> C}
which is decomposed into two relations R1 = (A, C) and R2 = (B, C). Then check if this decomposition
dependency preserving or not.
Step 1 : For checking whether the decomposition is dependency preserving or not we need to
check
following condition
F+ = (F1 F2)+
Step 3 : Let us find (F1)+ for relation R1 and (F2)+ for relation R2
R1(A,C) R2(B,C)
Step 4 : We will eliminate all the trivial relations and useless relations. Hence we can obtain R1
and R2 as
R1(A,C) R2(B,C)
A->C Nontrivial
B->C Non-Trivial
Thus the condition specified in step 1 i.e. F+=(F1 F2)+ is not true. Hence it is not dependency
preserving decomposition.
Example 2.10.5 Let relation R(A,B,C,D) be a relational schema with following functional
dependencies {A->B, B->C,C->D, and D->B}. The decomposition of R into (A,B), (B,C) and (B,D). Check
whether this decomposition is dependency preserving or not.
Solution :
Step 2 : We will find (F1)+, (F2)+, (F3)+ for relations R1(A,B) , R2(B,C) and R3(B,D) as follows -
Step 3 : We will eliminate all the trivial relations and useless relations. Hence we can obtain R1 ∪
R2 ∪ R3 as
C->B D->B
University Question
A 3NF table which does not have multiple overlapping candidate keys is said to be in BCNF.
Or in other words,
For a table to be in BCNF, following conditions must be satisfied : i) R must be in 3rd Normal Form
ii) For each functional dependency ( X → Y ), X should be a super Key. In simple words if Y is a prime
attribute then X can not be non prime attribute.
For example - Consider following table that represents that a Student enrollment for the course -
Enrollment Table
1 C Ankita
1 Java Poonam
2 C Ankita
3 C++ Supriya
4 C Archana
• One student can enroll for multiple courses. For example student with sid=1 can enroll for C
as well as Java.
• There can be multiple teachers teaching one course for example course C can be taught by
both the teachers namely - Ankita and Archana.
• The candidate key for above table can be (sid,course), because using these two columns we
can find
• The above table is not in BCNF because of the dependency teacher->course. Note that the
teacher is not a superkey or in other words, teacher is a non prime attribute and course is a
prime attribute and non-prime attribute derives the prime attribute.
• To convert the above table to BCNF we must decompose above table into Student and
Course tables
Student
sid Teacher
1 Ankita
1 Poonam
2 Ankita
3 Supriya
4 Archana
Course
Teacher course
Ankita C
Poonam Java
Ankita C
Supriya C++
Archana C
Solution :
Step 1 : We will first find out the candidate key from the given FD.
(AB)+ = {ABCD} = R
(BC)+ = {ABCD} = R
(AC) + = {AC} R
There is no involvement of D on LHS of the FD rules. Hence D can not be part of any candidate key.
Thus we obtain two candidate keys (AB)+ and (BC)+. Hence prime attributes = {A,B,C}
Step 2 : Now, we will start checking from reverse manner, that means from BCNF, then 3NF, then
2NF.
Step 3 : For R being in BCNF for X->Y the X should be candidate key or super key.
From above FDs consider C->D in which C is not a candidate key or super key. Hence given relation
is not in BCNF.
Step 4 : For R being in 3NF for X->Y either i) the X should be candidate key or super key or ii) Y
should be prime attribute. (For prime and non prime attributes refer step 1) o For AB->C or AB->D
the AB is a candidate key. Condition for 3NF is satisfied.
o Consider C->A. In this FD the C is not candidate key but A is a prime attribute.
Condition for 3NF is satisfied.
o Now consider B->D. In this FD, the B is not candidate key, similarly D is not a prime
attribute. Hence condition for 3NF fails over here. Hence given relation is not in 3NF.
Let X->Y, if X is a proper subset of candidate key and Y is a non prime attribute. This is a case of
partial functional dependency.
For relation to be in 2NF there should not be any partial functional dependency.
o For AB->C or AB->D the AB is a complete candidate key. Condition for 2NF is
satisfied.
o Consider C->A. In this FD the C is not candidate key. Condition for 2NF is satisfied.
o Now consider B->D. In this FD, the B is a part of candidate key(AB or BC), similarly D
is not a prime attribute. That means partial functional dependency occurs here.
Hence condition for 2NF fails over here. Hence given relation is not in 2NF.
Example 2.12.2 Consider a relation R(ABC) with following FD A->B, B->C and C->A.
Solution :
(C)+ = {ABC} =R
Step 2 : For R being in BCNF for X->Y the X should be candidate key or super key.
From above FDs o Consider A->B in which A is a candidate key or super key. Condition for BCNF is
satisfied. o Consider B->C in which B is a candidate key or super key. Condition for BCNF is satisfied.
o Consider C->A in which C is a candidate key or super key. Condition for
BCNF is satisfied.
Example Prove that any relational schema with two attributes is in BCNF.
Solution : Here, we will consider R={A,B} i.e. a relational schema with two attributes. Now various
possible FDs are A->B, B->A.
From the above FDs o Consider A->B in which A is a candidate key or super key. Condition for BCNF
is satisfied.
o Consider B->A in which B is a candidate key or super key. Condition for BCNF is
satisfied.
o Consider both A->B and B->A with both A and B is candidate key or super key.
Condition for BCNF is satisfied. o No FD holds in relation R. In this {A,B} is candidate
key or super key. Still condition for BCNF is satisfied.
• A table is said to have multi-valued dependency, if the following conditions are true,
If all these conditions are true for any relation(table), it is said to have multi-valued dependency.
• In simple terms, if there are two columns A and B - and for column A if there are multiple
values of column B then we say that MVD exists between A and B
• If there exists a multivalued dependency then the table is not in 4th normal form.
Student
1 C C++ English
German
2 Java English
French
Here sid =1 leads to multiple values for courses and skill. Following table shows this
1 C English
1 C++ German
1 C German
1 C++ English
2 Java English
2 Java French
Here sid and course are dependent but the Course and Skill are independent. The multivalued
dependency is denoted as : sid Course sid Skill
Definition : For a table to satisfy the Fourth Normal Form, it should satisfy the following
two conditions :
For example : Consider following student relation which is not in 4NF as it contains multivalued
dependency.
Student Table
1 C English
1 C++ German
1 C German
1 C++ English
2 Java English
2 Java French
Now to convert the above table to 4NF we must decompose the table into following two tables.
Student_Course Table
Key : (sid,Course)
sid Course
1 C
1 C++
2 Java
Student_Skill Table
Key : (sid,Skill)
sid Skill
1 English
1 German
2 English
2 French
University Questions
1. Explain first normal form, second normal form, third normal form and BCNF
with example.
AU :
Dec.-16, Marks 13
2. Explain Boyce Codd Normal form and fourth normal form with suitable
example.
AU : May-14, Marks 16
o If the join of R1 and R2 over C is equal to relation R, then we can say that a Join
Dependency (JD) exists.
o Where R1 and R2 are the decompositions R1(A, B, C) and R2(C, D) of a given
relations R (A, B, C, D).
o A JD {R1, R2,..., Rn} is said to hold over a relation R if R1, R2,....., Rn is a lossless-
join decomposition.
o The *(A, B, C, D), (C, D) will be a JD of R if the join of join's attribute is equal to the
relation R.
o Here, *(R1, R2, R3) is used to indicate that relation R1, R2, R3 and so on are a JD of
R.
ii) If we can decompose table further to eliminate redundancy and anomalies and
when we rejoin the table we should not be losing the original data or get a new record(join
Dependency Principle)
The fifth normal form is also called as project join normal form
Seller {Company, Product}. Hence table is not in 4th Normal Form. To make the above table in 4th
normal form we decompose above table into two tables as
Seller_Company
Seller Company Seller Product
Seller_Product
Sunil Amul Sharda HairOil
Sunil Icecream
Sunil Biscuits
is not in 5 th normal form because if we join the above two table we may get
Seller Company Product
Rupali Godrej Cinthol
Sharda Dabur Honey
Sharda Dabur HairOil
Sharda Dabur Rosewater
Sunil Amul Icecream
Sunil Amul Biscuits
Sunil Britania Icecream
Sunil Britania Biscuits
Newly added records
which are not present in
original table
To avoid the above problem we can decompose the tables into three tables as
The above table is in 4th Normal Form as there is no multivalued dependency. But it
Seller_Company
Seller_Product Seller Product Company Product
Company_Product
Rupali Cinthol Godrej Cinthol
Thus the table in in 5th normal Sunil Biscuit Britania Biscuit form.
Seller Company
Rupali Godrej
Sharda Dabur
Sunil Amul
Sunil Britania