SlideShare a Scribd company logo
©Silberschatz, Korth and Sudarshan
Relational Database Design
PROF.RAJUL SUTHAR
©Silberschatz, Korth and Sudarshan
TOPICS
 Domain and data dependency,
 Armstrong's axioms,
 Functional Dependencies,
 Normal forms,
 Dependency preservation,
 Lossless design.
©Silberschatz, Korth and Sudarshan
Domain and data dependency
 Domain is a set of all possible unique values for a specific
column. Domain is the set of legal values that can be assigned to
an attribute. Each attribute in a database must have a well-
defined domain.
 Domain Pattern: correct values. Like email, regular expression
Cardinalities
©Silberschatz, Korth and Sudarshan
Data dependency
 Data dependency means that one/more attribute uniquely
identifies other attributes of a relation. in more simple terms we
can say that some data values are dependent on other data
values in order to get recognized.
 Enrollment name
©Silberschatz, Korth and Sudarshan
Armstrong axioms
 Armstrong axioms is set of rules or axioms, introduced by
William W. Armstrong, that is used to test the logical implication
of functional dependencies.
 If F is a set of functional dependencies then the closure of F,
denoted as F
+
, is the set of all functional dependencies logically
implied by F.
 Armstrong’s Axioms are a set of rules, that when applied
repeatedly, generates a closure of functional dependencies.
©Silberschatz, Korth and Sudarshan
Inference Rule (IR)
1. Reflexive Rule (IR1)
In the reflexive rule, if Y is a subset of X, then X determines Y.
If X ⊇ Y then X → Y
Example:
X = {a, b, c, d, e}
Y = {a, b, c}
2. Augmentation Rule (IR2)
The augmentation is also called as a partial dependency. In
augmentation, if X determines Y, then XZ determines YZ for any Z.
If X → Y then XZ → YZ
Example:
For R(ABCD), if A → B then AC → BC
©Silberschatz, Korth and Sudarshan
Inference Rule (IR)
3. Transitive Rule (IR3)
In the transitive rule, if X determines Y and Y determine Z, then X
must also determine Z.
If X → Y and Y → Z then X → Z
4. Union Rule (IR4)
Union rule says, if X determines Y and X determines Z, then X must
also determine Y and Z.
If X → Y and X → Z then X → YZ
1. X → Y (given)
2. X → Z (given)
3. X → XY (using IR2 on 1 by augmentation with X. Where XX = X)
4. XY → YZ (using IR2 on 2 by augmentation with Y)
5. X → YZ (using IR3 on 3 and 4)
©Silberschatz, Korth and Sudarshan
Inference Rule (IR)
5. Decomposition Rule (IR5)
Decomposition rule is also known as project rule. It is the reverse of
union rule.
This Rule says, if X determines Y and Z, then X determines Y and X
determines Z separately.
If X → YZ then X → Y and X → Z
Proof:
1. X → YZ (given)
2. YZ → Y (using IR1 Rule)
3. X → Y (using IR3 on 1 and 2)
6. Pseudo transitive Rule (IR6)
In Pseudo transitive Rule, if X determines Y and YZ determines W,
then XZ determines W.
If X → Y and YZ → W then XZ → W
Proof:
1. X → Y (given)
2. WY → Z (given)
3. WX → WY (using IR2 on 1 by augmenting with W)
4. WX → Z (using IR on 3 and 2)
©Silberschatz, Korth and Sudarshan
GATE CSE | Que:1
©Silberschatz, Korth and Sudarshan
Que 2
©Silberschatz, Korth and Sudarshan
What is Database Normalization?
 Normalization is a database design technique that reduces data
redundancy and eliminates undesirable characteristics like
Insertion, Update and Deletion Anomalies.
 Normalization rules divides larger tables into smaller tables and
links them using relationships. The purpose of Normalization in
SQL is to eliminate redundant (repetitive) data and ensure data
is stored logically.
 Database Normal Forms
 Here is a list of Normal Forms in SQL:
 1NF (First Normal Form)
 2NF (Second Normal Form)
 3NF (Third Normal Form)
 BCNF (Boyce-Codd Normal Form)
 4NF (Fourth Normal Form)
 5NF (Fifth Normal Form)
 6NF (Sixth Normal Form)
©Silberschatz, Korth and Sudarshan
©Silberschatz, Korth and Sudarshan
Normal
Form
Description
1NF A relation is in 1NF if it contains an atomic value.
2NF A relation will be in 2NF if it is in 1NF and all non-key attributes are
fully functional dependent on the primary key.
3NF A relation will be in 3NF if it is in 2NF and no transition
dependency exists.
BCNF A stronger definition of 3NF is known as Boyce Codd's normal
form.
4NF A relation will be in 4NF if it is in Boyce Codd's normal form and
has no multi-valued dependency.
5NF A relation is in 5NF. If it is in 4NF and does not contain any join
dependency, joining should be lossless.
©Silberschatz, Korth and Sudarshan
First Normal Form
 Domain is atomic if its elements are considered to be indivisible
units
 Examples of non-atomic domains:
 Set of names, composite attributes
 Identification numbers like CS101 that can be broken up into
parts
 A relational schema R is in first normal form if the domains of all
attributes of R are atomic
 Non-atomic values complicate storage and encourage redundant
(repeated) storage of data
 E.g. Set of accounts stored with each customer, and set of owners
stored with each account
 We assume all relations are in first normal form
©Silberschatz, Korth and Sudarshan
First Normal Form (Contd.)
 Atomicity is actually a property of how the elements of the
domain are used.
 E.g. Strings would normally be considered indivisible
 Suppose courses are given numbers which are strings of the form
CMSC461 or ENEE651
 If the first four characters are extracted to find the department, the
domain of course numbers is not atomic.
 Doing so is a bad idea: leads to encoding of information in
application program rather than in the database.
©Silberschatz, Korth and Sudarshan
Pitfalls in Relational Database Design
 Relational database design requires that we find a
“good” collection of relation schemas. A bad design
may lead to
 Repetition of Information.
 Inability to represent certain information.
 Design Goals:
 Avoid redundant data
 Ensure that relationships among attributes are
represented
 Facilitate the checking of updates for violation of
database integrity constraints.
©Silberschatz, Korth and Sudarshan
Example
 Consider the relation schema:
Lending-schema = (branch-name, branch-city, assets,
customer-name, loan-number, amount)
 Redundancy:
 Data for branch-name, branch-city, assets are repeated for each loan that a
branch makes
 Wastes space
 Complicates updating, introducing possibility of inconsistency of assets value
 Null values
 Cannot store information about a branch if no loans exist
 Can use null values, but they are difficult to handle.
©Silberschatz, Korth and Sudarshan
Goal — Devise a Theory for the Following
 Decide whether a particular relation R is in “good” form.
 In the case that a relation R is not in “good” form, decompose it
into a set of relations {R1, R2, ..., Rn} such that
 each relation is in good form
 the decomposition is a lossless-join decomposition
 Our theory is based on:
 functional dependencies
©Silberschatz, Korth and Sudarshan
Decomposition
 Decompose the relation schema Lending-schema into:
Branch-schema = (branch-name, branch-city,assets)
Loan-info-schema = (customer-name, loan-number,
branch-name, amount)
 All attributes of an original schema (R) must appear in
the decomposition (R1, R2):
R = R1  R2
 Lossless-join decomposition.
For all possible relations r on schema R
r = R1 (r) R2 (r)
©Silberschatz, Korth and Sudarshan
Functional Dependencies
 Constraints on the set of legal relations.
 Require that the value for a certain set of attributes determines
uniquely the value for another set of attributes.
 A functional dependency is a generalization of the notion of a
key.
Example
Consider the relation Account(ano, balance, bname).
In this relation ano can determines balance and bname. So, there
is a functional
dependency from ano to balance and bname.
This can be denoted by ano → {balance, bname}.
©Silberschatz, Korth and Sudarshan
Types of Functional Dependencies
Full Dependency
In a relation, the attribute B is fully functional dependent on A if B is functionally
dependent on A, but not on any proper subset of A.
Eg. {Roll_No, Department_Name, Semester} →SPI
Partial Dependency
In a relation, the attribute B is partial functional dependent on A if B is functionally
dependent on A as well as on any proper subset of A.
If there is some attribute that can be removed from A and the still dependency holds.
Eg. {Enrollment_No, Department_Name} → SPI
Transitive Dependency
In a relation, if attribute(s) A→B and B→C, then C is transitively depends on A via B
(provided that A is not functionally dependent on B or C).
Eg. Staff_No → Branch_No and Branch_No → Branch_Address
Trivial FD:
X→Y is trivial FDif Y is a subset of X
Eg.{Roll_No, Department_Name} → Roll_No
Nontrivial FD
X→Y is nontrivial FDif Y is not a subset of X
Eg.. {Roll_No, Department_Name} → Student_Name
©Silberschatz, Korth and Sudarshan
Functional Dependencies (Cont.)
 Let R be a relation schema
  R and   R
 The functional dependency
  
holds on R if and only if for any legal relations r(R), whenever any
two tuples t1 and t2 of r agree on the attributes , they also agree
on the attributes . That is,
t1[] = t2 []  t1[ ] = t2 [ ]
 Example: Consider r(A,B) with the following instance of r.
 On this instance, A  B does NOT hold, but B  A does hold.
1 4
1 5
3 7
©Silberschatz, Korth and Sudarshan
Functional Dependencies (Cont.)
 K is a superkey for relation schema R if and only if K  R
 K is a candidate key for R if and only if
 K  R, and
 for no   K,   R
 Functional dependencies allow us to express constraints that
cannot be expressed using superkeys. Consider the schema:
Loan-info-schema = (customer-name, loan-number,
branch-name, amount).
We expect this set of functional dependencies to hold:
loan-number  amount
loan-number  branch-name
but would not expect the following to hold:
loan-number  customer-name
©Silberschatz, Korth and Sudarshan
Use of Functional Dependencies
 We use functional dependencies to:
 test relations to see if they are legal under a given set of functional
dependencies.
 If a relation r is legal under a set F of functional dependencies, we
say that r satisfies F.
 specify constraints on the set of legal relations
 We say that F holds on R if all legal relations on R satisfy the set of
functional dependencies F.
 Note: A specific instance of a relation schema may satisfy a
functional dependency even if the functional dependency does not
hold on all legal instances.
 For example, a specific instance of Loan-schema may, by chance,
satisfy
loan-number  customer-name.
©Silberschatz, Korth and Sudarshan
Functional Dependencies (Cont.)
 A functional dependency is trivial if it is satisfied by all instances
of a relation
 E.g.
 customer-name, loan-number  customer-name
 customer-name  customer-name
 In general,    is trivial if   
©Silberschatz, Korth and Sudarshan
Closure of a Set of Functional
Dependencies
 Given a set F set of functional dependencies, there are certain
other functional dependencies that are logically implied by F.
 E.g. If A  B and B  C, then we can infer that A  C
 The set of all functional dependencies logically implied by F is the
closure of F.
 We denote the closure of F by F+.
 We can find all of F+ by applying Armstrong’s Axioms:
 if   , then    (reflexivity)
 if   , then      (augmentation)
 if   , and   , then    (transitivity)
 These rules are
 sound (generate only functional dependencies that actually hold) and
 complete (generate all functional dependencies that hold).
©Silberschatz, Korth and Sudarshan
Example
 R = (A, B, C, G, H, I)
F = { A  B
A  C
CG  H
CG  I
B  H}
 some members of F+
 A  H
 by transitivity from A  B and B  H
 AG  I
 by augmenting A  C with G, to get AG  CG
and then transitivity with CG  I
 CG  HI
 from CG  H and CG  I : “union rule” can be inferred from
– definition of functional dependencies, or
– Augmentation of CG  I to infer CG  CGI, augmentation of
CG  H to infer CGI  HI, and then transitivity
©Silberschatz, Korth and Sudarshan
Procedure for Computing F+
 To compute the closure of a set of functional dependencies F:
F+ = F
repeat
for each functional dependency f in F+
apply reflexivity and augmentation rules on f
add the resulting functional dependencies to F+
for each pair of functional dependencies f1and f2 in F+
if f1 and f2 can be combined using transitivity
then add the resulting functional dependency to F+
until F+ does not change any further
NOTE: We will see an alternative procedure for this task later
©Silberschatz, Korth and Sudarshan
Closure of Functional Dependencies
(Cont.)
 We can further simplify manual computation of F+ by using
the following additional rules.
 If    holds and    holds, then     holds (union)
 If     holds, then    holds and    holds
(decomposition)
 If    holds and     holds, then     holds
(pseudotransitivity)
The above rules can be inferred from Armstrong’s axioms.
©Silberschatz, Korth and Sudarshan
Closure of Attribute Sets
 Given a set of attributes , define the closure of  under F
(denoted by +) as the set of attributes that are functionally
determined by  under F:
   is in F+    +
 Algorithm to compute +, the closure of  under F
result := ;
while (changes to result) do
for each    in F do
begin
if   result then result := result  
end
©Silberschatz, Korth and Sudarshan
Example of Attribute Set Closure
 R = (A, B, C, G, H, I)
 F = {A  B
A  C
CG  H
CG  I
B  H}
 (AG)+
1. result = AG
2. result = ABCG (A  C and A  B)
3. result = ABCGH (CG  H and CG  AGBC)
4. result = ABCGHI (CG  I and CG  AGBCH)
 Is AG a candidate key?
1. Is AG a super key?
1. Does AG  R? == Is (AG)+  R
2. Is any subset of AG a superkey?
1. Does A  R? == Is (A)+  R
2. Does G  R? == Is (G)+  R
©Silberschatz, Korth and Sudarshan
Uses of Attribute Closure
There are several uses of the attribute closure algorithm:
 Testing for superkey:
 To test if  is a superkey, we compute +, and check if + contains
all attributes of R.
 Testing functional dependencies
 To check if a functional dependency    holds (or, in other words,
is in F+), just check if   +.
 That is, we compute + by using attribute closure, and then check if
it contains .
 Is a simple and cheap test, and very useful
 Computing closure of F
 For each   R, we find the closure +, and for each S  +, we
output a functional dependency   S.
©Silberschatz, Korth and Sudarshan
Canonical Cover
 Sets of functional dependencies may have redundant
dependencies that can be inferred from the others
 Eg: A  C is redundant in: {A  B, B  C, A  C}
 Parts of a functional dependency may be redundant
 E.g. on RHS: {A  B, B  C, A  CD} can be simplified to
{A  B, B  C, A  D}
 E.g. on LHS: {A  B, B  C, AC  D} can be simplified to
{A  B, B  C, A  D}
 Intuitively, a canonical cover of F is a “minimal” set of functional
dependencies equivalent to F, having no redundant
dependencies or redundant parts of dependencies
©Silberschatz, Korth and Sudarshan
Extraneous Attributes
 Consider a set F of functional dependencies and the functional
dependency    in F.
 Attribute A is extraneous in  if A  
and F logically implies (F – {  })  {( – A)  }.
 Attribute A is extraneous in  if A  
and the set of functional dependencies
(F – {  })  { ( – A)} logically implies F.
 Note: implication in the opposite direction is trivial in each of
the cases above, since a “stronger” functional dependency
always implies a weaker one
 Example: Given F = {A  C, AB  C }
 B is extraneous in AB  C because {A  C, AB  C} logically
implies A  C (I.e. the result of dropping B from AB  C).
 Example: Given F = {A  C, AB  CD}
 C is extraneous in AB  CD since AB  C can be inferred even
after deleting C
©Silberschatz, Korth and Sudarshan
Testing if an Attribute is Extraneous
 Consider a set F of functional dependencies and the functional
dependency    in F.
 To test if attribute A   is extraneous in 
1. compute ({} – A)+ using the dependencies in F
2. check that ({} – A)+ contains A; if it does, A is extraneous
 To test if attribute A   is extraneous in 
1. compute + using only the dependencies in
F’ = (F – {  })  { ( – A)},
2. check that + contains A; if it does, A is extraneous
©Silberschatz, Korth and Sudarshan
Canonical Cover
 A canonical cover for F is a set of dependencies Fc such that
 F logically implies all dependencies in Fc, and
 Fc logically implies all dependencies in F, and
 No functional dependency in Fc contains an extraneous attribute, and
 Each left side of functional dependency in Fc is unique.
 To compute a canonical cover for F:
repeat
Use the union rule to replace any dependencies in F
1  1 and 1  1 with 1  1 2
Find a functional dependency    with an
extraneous attribute either in  or in 
If an extraneous attribute is found, delete it from   
until F does not change
 Note: Union rule may become applicable after some extraneous
attributes have been deleted, so it has to be re-applied
©Silberschatz, Korth and Sudarshan
Example of Computing a Canonical Cover
 R = (A, B, C)
F = {A  BC
B  C
A  B
AB  C}
 Combine A  BC and A  B into A  BC
 Set is now {A  BC, B  C, AB  C}
 A is extraneous in AB  C
 Check if the result of deleting A from AB  C is implied by the other
dependencies
 Yes: in fact, B  C is already present!
 Set is now {A  BC, B  C}
 C is extraneous in A  BC
 Check if A  C is logically implied by A  B and the other dependencies
 Yes: using transitivity on A  B and B  C.
– Can use attribute closure of A in more complex cases
 The canonical cover is: A  B
B  C
©Silberschatz, Korth and Sudarshan
Goals of Normalization
 Decide whether a particular relation R is in “good” form.
 In the case that a relation R is not in “good” form, decompose it
into a set of relations {R1, R2, ..., Rn} such that
 each relation is in good form
 the decomposition is a lossless-join decomposition
 Our theory is based on:
 functional dependencies
 multivalued dependencies
©Silberschatz, Korth and Sudarshan
Decomposition
 Decompose the relation schema Lending-schema into:
Branch-schema = (branch-name, branch-city,assets)
Loan-info-schema = (customer-name, loan-number,
branch-name, amount)
 All attributes of an original schema (R) must appear in the
decomposition (R1, R2):
R = R1  R2
 Lossless-join decomposition.
For all possible relations r on schema R
r = R1 (r) R2 (r)
 A decomposition of R into R1 and R2 is lossless join if and only if
at least one of the following dependencies is in F+:
 R1  R2  R1
 R1  R2  R2
©Silberschatz, Korth and Sudarshan
Example of Lossy-Join Decomposition
 Lossy-join decompositions result in information loss.
 Example: Decomposition of R = (A, B)
R2 = (A) R2 = (B)
A B



1
2
1
A


B
1
2
r
A(r) B(r)
A (r) B (r)
A B




1
2
1
2
©Silberschatz, Korth and Sudarshan
Normalization Using Functional Dependencies
 When we decompose a relation schema R with a set of
functional dependencies F into R1, R2,.., Rn we want
 Lossless-join decomposition: Otherwise decomposition would result in
information loss.
 No redundancy: The relations Ri preferably should be in either Boyce-
Codd Normal Form or Third Normal Form.
 Dependency preservation: Let Fi be the set of dependencies F+ that
include only attributes in Ri.
 Preferably the decomposition should be dependency preserving,
that is, (F1  F2  …  Fn)+ = F+
 Otherwise, checking updates for violation of functional
dependencies may require computing joins, which is expensive.
©Silberschatz, Korth and Sudarshan
Example
 R = (A, B, C)
F = {A  B, B  C)
 Can be decomposed in two different ways
 R1 = (A, B), R2 = (B, C)
 Lossless-join decomposition:
R1  R2 = {B} and B  BC
 Dependency preserving
 R1 = (A, B), R2 = (A, C)
 Lossless-join decomposition:
R1  R2 = {A} and A  AB
 Not dependency preserving
(cannot check B  C without computing R1 R2)
©Silberschatz, Korth and Sudarshan
Testing for Dependency Preservation
 To check if a dependency  is preserved in a decomposition of
R into R1, R2, …, Rn we apply the following simplified test (with
attribute closure done w.r.t. F)
 result = 
while (changes to result) do
for each Ri in the decomposition
t = (result  Ri)+  Ri
result = result  t
 If result contains all attributes in , then the functional dependency
   is preserved.
 We apply the test on all dependencies in F to check if a
decomposition is dependency preserving
 This procedure takes polynomial time, instead of the exponential
time required to compute F+ and (F1  F2  …  Fn)+
©Silberschatz, Korth and Sudarshan
Boyce-Codd Normal Form
    is trivial (i.e.,   )
  is a superkey for R
A relation schema R is in BCNF with respect to a set F of functional
dependencies if for all functional dependencies in F+ of the form
  , where   R and   R, at least one of the following holds:
©Silberschatz, Korth and Sudarshan
Example
 R = (A, B, C)
F = {A  B
B  C}
Key = {A}
 R is not in BCNF
 Decomposition R1 = (A, B), R2 = (B, C)
 R1 and R2 in BCNF
 Lossless-join decomposition
 Dependency preserving
©Silberschatz, Korth and Sudarshan
Testing for BCNF
 To check if a non-trivial dependency   causes a violation of
BCNF
1. compute + (the attribute closure of ), and
2. verify that it includes all attributes of R, that is, it is a superkey of R.
 Simplified test: To check if a relation schema R is in BCNF, it
suffices to check only the dependencies in the given set F for
violation of BCNF, rather than checking all dependencies in F+.
 If none of the dependencies in F causes a violation of BCNF, then
none of the dependencies in F+ will cause a violation of BCNF either.
 However, using only F is incorrect when testing a relation in a
decomposition of R
 E.g. Consider R (A, B, C, D), with F = { A B, B C}
 Decompose R into R1(A,B) and R2(A,C,D)
 Neither of the dependencies in F contain only attributes from
(A,C,D) so we might be mislead into thinking R2 satisfies BCNF.
 In fact, dependency A  C in F+ shows R2 is not in BCNF.
©Silberschatz, Korth and Sudarshan
BCNF Decomposition Algorithm
result := {R};
done := false;
compute F+;
while (not done) do
if (there is a schema Ri in result that is not in BCNF)
then begin
let    be a nontrivial functional
dependency that holds on Ri
such that   Ri is not in F+,
and    = ;
result := (result – Ri )  (Ri – )  (,  );
end
else done := true;
Note: each Ri is in BCNF, and decomposition is lossless-join.
©Silberschatz, Korth and Sudarshan
Example of BCNF Decomposition
 R = (branch-name, branch-city, assets,
customer-name, loan-number, amount)
F = {branch-name  assets branch-city
loan-number  amount branch-name}
Key = {loan-number, customer-name}
 Decomposition
 R1 = (branch-name, branch-city, assets)
 R2 = (branch-name, customer-name, loan-number, amount)
 R3 = (branch-name, loan-number, amount)
 R4 = (customer-name, loan-number)
 Final decomposition
R1, R3, R4
©Silberschatz, Korth and Sudarshan
Testing Decomposition for BCNF
 To check if a relation Ri in a decomposition of R is in BCNF,
 Either test Ri for BCNF with respect to the restriction of F to Ri (that
is, all FDs in F+ that contain only attributes from Ri)
 or use the original set of dependencies F that hold on R, but with the
following test:
– for every set of attributes   Ri, check that + (the attribute
closure of ) either includes no attribute of Ri- , or includes all
attributes of Ri.
 If the condition is violated by some    in F, the dependency
  (+ -  )  Ri
can be shown to hold on Ri, and Ri violates BCNF.
 We use above dependency to decompose Ri
©Silberschatz, Korth and Sudarshan
BCNF and Dependency Preservation
 R = (J, K, L)
F = {JK  L
L  K}
Two candidate keys = JK and JL
 R is not in BCNF
 Any decomposition of R will fail to preserve
JK  L
It is not always possible to get a BCNF decomposition that is
dependency preserving
©Silberschatz, Korth and Sudarshan
Third Normal Form: Motivation
 There are some situations where
 BCNF is not dependency preserving, and
 efficient checking for FD violation on updates is important
 Solution: define a weaker normal form, called Third Normal Form.
 Allows some redundancy (with resultant problems; we will see
examples later)
 But FDs can be checked on individual relations without computing a
join.
 There is always a lossless-join, dependency-preserving decomposition
into 3NF.
©Silberschatz, Korth and Sudarshan
Third Normal Form
 A relation schema R is in third normal form (3NF) if for all:
   in F+
at least one of the following holds:
    is trivial (i.e.,   )
  is a superkey for R
 Each attribute A in  –  is contained in a candidate key for R.
(NOTE: each attribute may be in a different candidate key)
 If a relation is in BCNF it is in 3NF (since in BCNF one of the first
two conditions above must hold).
 Third condition is a minimal relaxation of BCNF to ensure
dependency preservation (will see why later).
©Silberschatz, Korth and Sudarshan
3NF (Cont.)
 Example
 R = (J, K, L)
F = {JK  L, L  K}
 Two candidate keys: JK and JL
 R is in 3NF
JK  L JK is a superkey
L  K K is contained in a candidate key
 BCNF decomposition has (JL) and (LK)
 Testing for JK  L requires a join
 There is some redundancy in this schema
 Equivalent to example in book:
Banker-schema = (branch-name, customer-name, banker-name)
banker-name  branch name
branch name customer-name  banker-name
©Silberschatz, Korth and Sudarshan
Testing for 3NF
 Optimization: Need to check only FDs in F, need not check all
FDs in F+.
 Use attribute closure to check for each dependency   , if  is
a superkey.
 If  is not a superkey, we have to verify if each attribute in  is
contained in a candidate key of R
 this test is rather more expensive, since it involve finding candidate
keys
 testing for 3NF has been shown to be NP-hard
 Interestingly, decomposition into third normal form (described
shortly) can be done in polynomial time
©Silberschatz, Korth and Sudarshan
3NF Decomposition Algorithm
Let Fc be a canonical cover for F;
i := 0;
for each functional dependency    in Fc do
if none of the schemas Rj, 1  j  i contains  
then begin
i := i + 1;
Ri :=  
end
if none of the schemas Rj, 1  j  i contains a candidate key for R
then begin
i := i + 1;
Ri := any candidate key for R;
end
return (R1, R2, ..., Ri)
©Silberschatz, Korth and Sudarshan
3NF Decomposition Algorithm (Cont.)
 Above algorithm ensures:
 each relation schema Ri is in 3NF
 decomposition is dependency preserving and lossless-join
©Silberschatz, Korth and Sudarshan
Example
 Relation schema:
Banker-info-schema = (branch-name, customer-name,
banker-name, office-number)
 The functional dependencies for this relation schema are:
banker-name  branch-name office-number
customer-name branch-name  banker-name
 The key is:
{customer-name, branch-name}
©Silberschatz, Korth and Sudarshan
Applying 3NF to Banker-info-schema
 The for loop in the algorithm causes us to include the
following schemas in our decomposition:
Banker-office-schema = (banker-name, branch-name,
office-number)
Banker-schema = (customer-name, branch-name,
banker-name)
 Since Banker-schema contains a candidate key for
Banker-info-schema, we are done with the decomposition
process.
©Silberschatz, Korth and Sudarshan
Comparison of BCNF and 3NF
 It is always possible to decompose a relation into relations in
3NF and
 the decomposition is lossless
 the dependencies are preserved
 It is always possible to decompose a relation into relations in
BCNF and
 the decomposition is lossless
 it may not be possible to preserve dependencies.
©Silberschatz, Korth and Sudarshan
Comparison of BCNF and 3NF (Cont.)
J
j1
j2
j3
null
L
l1
l1
l1
l2
K
k1
k1
k1
k2
A schema that is in 3NF but not in BCNF has the problems of
 repetition of information (e.g., the relationship l1, k1)
 need to use null values (e.g., to represent the relationship
l2, k2 where there is no corresponding value for J).
 Example of problems due to redundancy in 3NF
 R = (J, K, L)
F = {JK  L, L  K}
©Silberschatz, Korth and Sudarshan
Design Goals
 Goal for a relational database design is:
 BCNF.
 Lossless join.
 Dependency preservation.
 If we cannot achieve this, we accept one of
 Lack of dependency preservation
 Redundancy due to use of 3NF
 Interestingly, SQL does not provide a direct way of specifying
functional dependencies other than superkeys.
Can specify FDs using assertions, but they are expensive to test
 Even if we had a dependency preserving decomposition, using
SQL we would not be able to efficiently test a functional
dependency whose left hand side is not a key.
©Silberschatz, Korth and Sudarshan
Overall Database Design Process
 We have assumed schema R is given
 R could have been generated when converting E-R diagram to a set of
tables.
 R could have been a single relation containing all attributes that are of
interest (called universal relation).
 Normalization breaks R into smaller relations.
 R could have been the result of some ad hoc design of relations, which
we then test/convert to normal form.
©Silberschatz, Korth and Sudarshan
ER Model and Normalization
 When an E-R diagram is carefully designed, identifying all entities
correctly, the tables generated from the E-R diagram should not need
further normalization.
 However, in a real (imperfect) design there can be FDs from non-key
attributes of an entity to other attributes of the entity
 E.g. employee entity with attributes department-number and
department-address, and an FD department-number  department-
address
 Good design would have made department an entity
 FDs from non-key attributes of a relationship set possible, but rare ---
most relationships are binary

More Related Content

DOCX
Artificial Intelligence Lab File
Kandarp Tiwari
 
PPTX
Normalization
Salman Memon
 
PPT
Lossless decomposition
MANASYJAYASURYA
 
PPTX
Normalization in DBMS
Prateek Parimal
 
PPT
Databases: Locking Methods
Damian T. Gordon
 
PPTX
Chapter 6 relational data model and relational
Jafar Nesargi
 
PPTX
Functional dependencies in Database Management System
Kevin Jadiya
 
PDF
Database Normalization
Arun Sharma
 
Artificial Intelligence Lab File
Kandarp Tiwari
 
Normalization
Salman Memon
 
Lossless decomposition
MANASYJAYASURYA
 
Normalization in DBMS
Prateek Parimal
 
Databases: Locking Methods
Damian T. Gordon
 
Chapter 6 relational data model and relational
Jafar Nesargi
 
Functional dependencies in Database Management System
Kevin Jadiya
 
Database Normalization
Arun Sharma
 

What's hot (20)

PPTX
Lec 8 (distributed database)
Sudarshan Mondal
 
PPT
2.3 bayesian classification
Krish_ver2
 
PPTX
Overview of Storage and Indexing ...
Javed Khan
 
PPTX
Normalization in DBMS
Prateek Parimal
 
PPTX
DBMS - FIRST NORMAL FORM
MANISH T I
 
PPTX
Introduction to tree
Md. Rakib Trofder
 
PPT
(Radhika) presentation on chapter 2 ai
Radhika Srinivasan
 
PPTX
Lecture 11 semantic analysis 2
Iffat Anjum
 
PPTX
SQL Operators.pptx
RUBAB79
 
PPT
15. Transactions in DBMS
koolkampus
 
PPT
Databases: Normalisation
Damian T. Gordon
 
PPT
Concurrent transactions
Sajan Sahu
 
PPTX
relational algebra (joins)
Nilt1234
 
PPT
Normalization of database tables
Dhani Ahmad
 
PPT
Data mining techniques unit 1
malathieswaran29
 
PPTX
Tree Traversal Algorithm in Data Structure
Meghaj Mallick
 
PDF
Relational algebra in dbms
Vignesh Saravanan
 
PPTX
Functional dependancy
Visakh V
 
PDF
Apostila Oracle
Ricardo Terra
 
PPTX
Suffix Tree and Suffix Array
Harshit Agarwal
 
Lec 8 (distributed database)
Sudarshan Mondal
 
2.3 bayesian classification
Krish_ver2
 
Overview of Storage and Indexing ...
Javed Khan
 
Normalization in DBMS
Prateek Parimal
 
DBMS - FIRST NORMAL FORM
MANISH T I
 
Introduction to tree
Md. Rakib Trofder
 
(Radhika) presentation on chapter 2 ai
Radhika Srinivasan
 
Lecture 11 semantic analysis 2
Iffat Anjum
 
SQL Operators.pptx
RUBAB79
 
15. Transactions in DBMS
koolkampus
 
Databases: Normalisation
Damian T. Gordon
 
Concurrent transactions
Sajan Sahu
 
relational algebra (joins)
Nilt1234
 
Normalization of database tables
Dhani Ahmad
 
Data mining techniques unit 1
malathieswaran29
 
Tree Traversal Algorithm in Data Structure
Meghaj Mallick
 
Relational algebra in dbms
Vignesh Saravanan
 
Functional dependancy
Visakh V
 
Apostila Oracle
Ricardo Terra
 
Suffix Tree and Suffix Array
Harshit Agarwal
 
Ad

Similar to ch7-clean.ppt (20)

PPTX
Functional dependency.pptx
ssuser7e9b941
 
PPT
Lecture_W9_Normalization.ppt
SadiaArifinSmrity
 
PPT
Normalization in Relational Database.ppt
CommonMan50
 
PPT
Realtional database design and structurw
realme6i
 
PPT
https://www.slideshare.net/upload?download_id=97198915&original_file=true&_gl...
gajalakshmi45
 
PPT
ch7.pptchjvnl. xddtjollbxzdfjmmbxgjkbcfjg
kiruthikan18
 
PPT
DATABASE MANAGEMENT SYSTEM POLYTECHNICch2.ppt
dhanajimirajkar1
 
PPTX
decompositiondjSkxificckcifjfififivivkvkvkvivivivjvkvkvk.pptx
jack21ncr
 
PDF
Chapter 7, Normalisation, Database System Concepts,7th edition, Slides
147SadikaTabassum
 
PPTX
Normalization and Functional Dependencies
yashvermamaven
 
PPT
Database
Riki Afriansyah
 
DOCX
Database System Concepts, 6th Ed.©Silberschatz, Korth and .docx
randyburney60861
 
PDF
DBMS-Ch7-MKB (1).pdf
AnikDas86
 
PPT
Introduction to Schema refinement lecture notes.ppt
SubburamSivakumar1
 
PPT
chapter3 of DBMS includes relational algebra.ppt
juhishrivastava25
 
PPT
DBMS _Relational model
Azizul Mamun
 
Functional dependency.pptx
ssuser7e9b941
 
Lecture_W9_Normalization.ppt
SadiaArifinSmrity
 
Normalization in Relational Database.ppt
CommonMan50
 
Realtional database design and structurw
realme6i
 
https://www.slideshare.net/upload?download_id=97198915&original_file=true&_gl...
gajalakshmi45
 
ch7.pptchjvnl. xddtjollbxzdfjmmbxgjkbcfjg
kiruthikan18
 
DATABASE MANAGEMENT SYSTEM POLYTECHNICch2.ppt
dhanajimirajkar1
 
decompositiondjSkxificckcifjfififivivkvkvkvivivivjvkvkvk.pptx
jack21ncr
 
Chapter 7, Normalisation, Database System Concepts,7th edition, Slides
147SadikaTabassum
 
Normalization and Functional Dependencies
yashvermamaven
 
Database
Riki Afriansyah
 
Database System Concepts, 6th Ed.©Silberschatz, Korth and .docx
randyburney60861
 
DBMS-Ch7-MKB (1).pdf
AnikDas86
 
Introduction to Schema refinement lecture notes.ppt
SubburamSivakumar1
 
chapter3 of DBMS includes relational algebra.ppt
juhishrivastava25
 
DBMS _Relational model
Azizul Mamun
 
Ad

Recently uploaded (20)

PDF
Introduction to Ship Engine Room Systems.pdf
Mahmoud Moghtaderi
 
PDF
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
PPTX
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
PDF
AI-Driven IoT-Enabled UAV Inspection Framework for Predictive Maintenance and...
ijcncjournal019
 
PDF
Advanced LangChain & RAG: Building a Financial AI Assistant with Real-Time Data
Soufiane Sejjari
 
PPTX
quantum computing transition from classical mechanics.pptx
gvlbcy
 
PPTX
22PCOAM21 Session 2 Understanding Data Source.pptx
Guru Nanak Technical Institutions
 
PDF
Chad Ayach - A Versatile Aerospace Professional
Chad Ayach
 
PDF
Natural_Language_processing_Unit_I_notes.pdf
sanguleumeshit
 
PDF
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
PPTX
business incubation centre aaaaaaaaaaaaaa
hodeeesite4
 
PPTX
Inventory management chapter in automation and robotics.
atisht0104
 
PDF
STUDY OF NOVEL CHANNEL MATERIALS USING III-V COMPOUNDS WITH VARIOUS GATE DIEL...
ijoejnl
 
PPTX
MULTI LEVEL DATA TRACKING USING COOJA.pptx
dollysharma12ab
 
PDF
FLEX-LNG-Company-Presentation-Nov-2017.pdf
jbloggzs
 
PDF
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
PDF
Cryptography and Information :Security Fundamentals
Dr. Madhuri Jawale
 
PDF
67243-Cooling and Heating & Calculation.pdf
DHAKA POLYTECHNIC
 
PDF
EVS+PRESENTATIONS EVS+PRESENTATIONS like
saiyedaqib429
 
PDF
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 
Introduction to Ship Engine Room Systems.pdf
Mahmoud Moghtaderi
 
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
AI-Driven IoT-Enabled UAV Inspection Framework for Predictive Maintenance and...
ijcncjournal019
 
Advanced LangChain & RAG: Building a Financial AI Assistant with Real-Time Data
Soufiane Sejjari
 
quantum computing transition from classical mechanics.pptx
gvlbcy
 
22PCOAM21 Session 2 Understanding Data Source.pptx
Guru Nanak Technical Institutions
 
Chad Ayach - A Versatile Aerospace Professional
Chad Ayach
 
Natural_Language_processing_Unit_I_notes.pdf
sanguleumeshit
 
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
business incubation centre aaaaaaaaaaaaaa
hodeeesite4
 
Inventory management chapter in automation and robotics.
atisht0104
 
STUDY OF NOVEL CHANNEL MATERIALS USING III-V COMPOUNDS WITH VARIOUS GATE DIEL...
ijoejnl
 
MULTI LEVEL DATA TRACKING USING COOJA.pptx
dollysharma12ab
 
FLEX-LNG-Company-Presentation-Nov-2017.pdf
jbloggzs
 
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
Cryptography and Information :Security Fundamentals
Dr. Madhuri Jawale
 
67243-Cooling and Heating & Calculation.pdf
DHAKA POLYTECHNIC
 
EVS+PRESENTATIONS EVS+PRESENTATIONS like
saiyedaqib429
 
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 

ch7-clean.ppt

  • 1. ©Silberschatz, Korth and Sudarshan Relational Database Design PROF.RAJUL SUTHAR
  • 2. ©Silberschatz, Korth and Sudarshan TOPICS  Domain and data dependency,  Armstrong's axioms,  Functional Dependencies,  Normal forms,  Dependency preservation,  Lossless design.
  • 3. ©Silberschatz, Korth and Sudarshan Domain and data dependency  Domain is a set of all possible unique values for a specific column. Domain is the set of legal values that can be assigned to an attribute. Each attribute in a database must have a well- defined domain.  Domain Pattern: correct values. Like email, regular expression Cardinalities
  • 4. ©Silberschatz, Korth and Sudarshan Data dependency  Data dependency means that one/more attribute uniquely identifies other attributes of a relation. in more simple terms we can say that some data values are dependent on other data values in order to get recognized.  Enrollment name
  • 5. ©Silberschatz, Korth and Sudarshan Armstrong axioms  Armstrong axioms is set of rules or axioms, introduced by William W. Armstrong, that is used to test the logical implication of functional dependencies.  If F is a set of functional dependencies then the closure of F, denoted as F + , is the set of all functional dependencies logically implied by F.  Armstrong’s Axioms are a set of rules, that when applied repeatedly, generates a closure of functional dependencies.
  • 6. ©Silberschatz, Korth and Sudarshan Inference Rule (IR) 1. Reflexive Rule (IR1) In the reflexive rule, if Y is a subset of X, then X determines Y. If X ⊇ Y then X → Y Example: X = {a, b, c, d, e} Y = {a, b, c} 2. Augmentation Rule (IR2) The augmentation is also called as a partial dependency. In augmentation, if X determines Y, then XZ determines YZ for any Z. If X → Y then XZ → YZ Example: For R(ABCD), if A → B then AC → BC
  • 7. ©Silberschatz, Korth and Sudarshan Inference Rule (IR) 3. Transitive Rule (IR3) In the transitive rule, if X determines Y and Y determine Z, then X must also determine Z. If X → Y and Y → Z then X → Z 4. Union Rule (IR4) Union rule says, if X determines Y and X determines Z, then X must also determine Y and Z. If X → Y and X → Z then X → YZ 1. X → Y (given) 2. X → Z (given) 3. X → XY (using IR2 on 1 by augmentation with X. Where XX = X) 4. XY → YZ (using IR2 on 2 by augmentation with Y) 5. X → YZ (using IR3 on 3 and 4)
  • 8. ©Silberschatz, Korth and Sudarshan Inference Rule (IR) 5. Decomposition Rule (IR5) Decomposition rule is also known as project rule. It is the reverse of union rule. This Rule says, if X determines Y and Z, then X determines Y and X determines Z separately. If X → YZ then X → Y and X → Z Proof: 1. X → YZ (given) 2. YZ → Y (using IR1 Rule) 3. X → Y (using IR3 on 1 and 2) 6. Pseudo transitive Rule (IR6) In Pseudo transitive Rule, if X determines Y and YZ determines W, then XZ determines W. If X → Y and YZ → W then XZ → W Proof: 1. X → Y (given) 2. WY → Z (given) 3. WX → WY (using IR2 on 1 by augmenting with W) 4. WX → Z (using IR on 3 and 2)
  • 9. ©Silberschatz, Korth and Sudarshan GATE CSE | Que:1
  • 10. ©Silberschatz, Korth and Sudarshan Que 2
  • 11. ©Silberschatz, Korth and Sudarshan What is Database Normalization?  Normalization is a database design technique that reduces data redundancy and eliminates undesirable characteristics like Insertion, Update and Deletion Anomalies.  Normalization rules divides larger tables into smaller tables and links them using relationships. The purpose of Normalization in SQL is to eliminate redundant (repetitive) data and ensure data is stored logically.  Database Normal Forms  Here is a list of Normal Forms in SQL:  1NF (First Normal Form)  2NF (Second Normal Form)  3NF (Third Normal Form)  BCNF (Boyce-Codd Normal Form)  4NF (Fourth Normal Form)  5NF (Fifth Normal Form)  6NF (Sixth Normal Form)
  • 13. ©Silberschatz, Korth and Sudarshan Normal Form Description 1NF A relation is in 1NF if it contains an atomic value. 2NF A relation will be in 2NF if it is in 1NF and all non-key attributes are fully functional dependent on the primary key. 3NF A relation will be in 3NF if it is in 2NF and no transition dependency exists. BCNF A stronger definition of 3NF is known as Boyce Codd's normal form. 4NF A relation will be in 4NF if it is in Boyce Codd's normal form and has no multi-valued dependency. 5NF A relation is in 5NF. If it is in 4NF and does not contain any join dependency, joining should be lossless.
  • 14. ©Silberschatz, Korth and Sudarshan First Normal Form  Domain is atomic if its elements are considered to be indivisible units  Examples of non-atomic domains:  Set of names, composite attributes  Identification numbers like CS101 that can be broken up into parts  A relational schema R is in first normal form if the domains of all attributes of R are atomic  Non-atomic values complicate storage and encourage redundant (repeated) storage of data  E.g. Set of accounts stored with each customer, and set of owners stored with each account  We assume all relations are in first normal form
  • 15. ©Silberschatz, Korth and Sudarshan First Normal Form (Contd.)  Atomicity is actually a property of how the elements of the domain are used.  E.g. Strings would normally be considered indivisible  Suppose courses are given numbers which are strings of the form CMSC461 or ENEE651  If the first four characters are extracted to find the department, the domain of course numbers is not atomic.  Doing so is a bad idea: leads to encoding of information in application program rather than in the database.
  • 16. ©Silberschatz, Korth and Sudarshan Pitfalls in Relational Database Design  Relational database design requires that we find a “good” collection of relation schemas. A bad design may lead to  Repetition of Information.  Inability to represent certain information.  Design Goals:  Avoid redundant data  Ensure that relationships among attributes are represented  Facilitate the checking of updates for violation of database integrity constraints.
  • 17. ©Silberschatz, Korth and Sudarshan Example  Consider the relation schema: Lending-schema = (branch-name, branch-city, assets, customer-name, loan-number, amount)  Redundancy:  Data for branch-name, branch-city, assets are repeated for each loan that a branch makes  Wastes space  Complicates updating, introducing possibility of inconsistency of assets value  Null values  Cannot store information about a branch if no loans exist  Can use null values, but they are difficult to handle.
  • 18. ©Silberschatz, Korth and Sudarshan Goal — Devise a Theory for the Following  Decide whether a particular relation R is in “good” form.  In the case that a relation R is not in “good” form, decompose it into a set of relations {R1, R2, ..., Rn} such that  each relation is in good form  the decomposition is a lossless-join decomposition  Our theory is based on:  functional dependencies
  • 19. ©Silberschatz, Korth and Sudarshan Decomposition  Decompose the relation schema Lending-schema into: Branch-schema = (branch-name, branch-city,assets) Loan-info-schema = (customer-name, loan-number, branch-name, amount)  All attributes of an original schema (R) must appear in the decomposition (R1, R2): R = R1  R2  Lossless-join decomposition. For all possible relations r on schema R r = R1 (r) R2 (r)
  • 20. ©Silberschatz, Korth and Sudarshan Functional Dependencies  Constraints on the set of legal relations.  Require that the value for a certain set of attributes determines uniquely the value for another set of attributes.  A functional dependency is a generalization of the notion of a key. Example Consider the relation Account(ano, balance, bname). In this relation ano can determines balance and bname. So, there is a functional dependency from ano to balance and bname. This can be denoted by ano → {balance, bname}.
  • 21. ©Silberschatz, Korth and Sudarshan Types of Functional Dependencies Full Dependency In a relation, the attribute B is fully functional dependent on A if B is functionally dependent on A, but not on any proper subset of A. Eg. {Roll_No, Department_Name, Semester} →SPI Partial Dependency In a relation, the attribute B is partial functional dependent on A if B is functionally dependent on A as well as on any proper subset of A. If there is some attribute that can be removed from A and the still dependency holds. Eg. {Enrollment_No, Department_Name} → SPI Transitive Dependency In a relation, if attribute(s) A→B and B→C, then C is transitively depends on A via B (provided that A is not functionally dependent on B or C). Eg. Staff_No → Branch_No and Branch_No → Branch_Address Trivial FD: X→Y is trivial FDif Y is a subset of X Eg.{Roll_No, Department_Name} → Roll_No Nontrivial FD X→Y is nontrivial FDif Y is not a subset of X Eg.. {Roll_No, Department_Name} → Student_Name
  • 22. ©Silberschatz, Korth and Sudarshan Functional Dependencies (Cont.)  Let R be a relation schema   R and   R  The functional dependency    holds on R if and only if for any legal relations r(R), whenever any two tuples t1 and t2 of r agree on the attributes , they also agree on the attributes . That is, t1[] = t2 []  t1[ ] = t2 [ ]  Example: Consider r(A,B) with the following instance of r.  On this instance, A  B does NOT hold, but B  A does hold. 1 4 1 5 3 7
  • 23. ©Silberschatz, Korth and Sudarshan Functional Dependencies (Cont.)  K is a superkey for relation schema R if and only if K  R  K is a candidate key for R if and only if  K  R, and  for no   K,   R  Functional dependencies allow us to express constraints that cannot be expressed using superkeys. Consider the schema: Loan-info-schema = (customer-name, loan-number, branch-name, amount). We expect this set of functional dependencies to hold: loan-number  amount loan-number  branch-name but would not expect the following to hold: loan-number  customer-name
  • 24. ©Silberschatz, Korth and Sudarshan Use of Functional Dependencies  We use functional dependencies to:  test relations to see if they are legal under a given set of functional dependencies.  If a relation r is legal under a set F of functional dependencies, we say that r satisfies F.  specify constraints on the set of legal relations  We say that F holds on R if all legal relations on R satisfy the set of functional dependencies F.  Note: A specific instance of a relation schema may satisfy a functional dependency even if the functional dependency does not hold on all legal instances.  For example, a specific instance of Loan-schema may, by chance, satisfy loan-number  customer-name.
  • 25. ©Silberschatz, Korth and Sudarshan Functional Dependencies (Cont.)  A functional dependency is trivial if it is satisfied by all instances of a relation  E.g.  customer-name, loan-number  customer-name  customer-name  customer-name  In general,    is trivial if   
  • 26. ©Silberschatz, Korth and Sudarshan Closure of a Set of Functional Dependencies  Given a set F set of functional dependencies, there are certain other functional dependencies that are logically implied by F.  E.g. If A  B and B  C, then we can infer that A  C  The set of all functional dependencies logically implied by F is the closure of F.  We denote the closure of F by F+.  We can find all of F+ by applying Armstrong’s Axioms:  if   , then    (reflexivity)  if   , then      (augmentation)  if   , and   , then    (transitivity)  These rules are  sound (generate only functional dependencies that actually hold) and  complete (generate all functional dependencies that hold).
  • 27. ©Silberschatz, Korth and Sudarshan Example  R = (A, B, C, G, H, I) F = { A  B A  C CG  H CG  I B  H}  some members of F+  A  H  by transitivity from A  B and B  H  AG  I  by augmenting A  C with G, to get AG  CG and then transitivity with CG  I  CG  HI  from CG  H and CG  I : “union rule” can be inferred from – definition of functional dependencies, or – Augmentation of CG  I to infer CG  CGI, augmentation of CG  H to infer CGI  HI, and then transitivity
  • 28. ©Silberschatz, Korth and Sudarshan Procedure for Computing F+  To compute the closure of a set of functional dependencies F: F+ = F repeat for each functional dependency f in F+ apply reflexivity and augmentation rules on f add the resulting functional dependencies to F+ for each pair of functional dependencies f1and f2 in F+ if f1 and f2 can be combined using transitivity then add the resulting functional dependency to F+ until F+ does not change any further NOTE: We will see an alternative procedure for this task later
  • 29. ©Silberschatz, Korth and Sudarshan Closure of Functional Dependencies (Cont.)  We can further simplify manual computation of F+ by using the following additional rules.  If    holds and    holds, then     holds (union)  If     holds, then    holds and    holds (decomposition)  If    holds and     holds, then     holds (pseudotransitivity) The above rules can be inferred from Armstrong’s axioms.
  • 30. ©Silberschatz, Korth and Sudarshan Closure of Attribute Sets  Given a set of attributes , define the closure of  under F (denoted by +) as the set of attributes that are functionally determined by  under F:    is in F+    +  Algorithm to compute +, the closure of  under F result := ; while (changes to result) do for each    in F do begin if   result then result := result   end
  • 31. ©Silberschatz, Korth and Sudarshan Example of Attribute Set Closure  R = (A, B, C, G, H, I)  F = {A  B A  C CG  H CG  I B  H}  (AG)+ 1. result = AG 2. result = ABCG (A  C and A  B) 3. result = ABCGH (CG  H and CG  AGBC) 4. result = ABCGHI (CG  I and CG  AGBCH)  Is AG a candidate key? 1. Is AG a super key? 1. Does AG  R? == Is (AG)+  R 2. Is any subset of AG a superkey? 1. Does A  R? == Is (A)+  R 2. Does G  R? == Is (G)+  R
  • 32. ©Silberschatz, Korth and Sudarshan Uses of Attribute Closure There are several uses of the attribute closure algorithm:  Testing for superkey:  To test if  is a superkey, we compute +, and check if + contains all attributes of R.  Testing functional dependencies  To check if a functional dependency    holds (or, in other words, is in F+), just check if   +.  That is, we compute + by using attribute closure, and then check if it contains .  Is a simple and cheap test, and very useful  Computing closure of F  For each   R, we find the closure +, and for each S  +, we output a functional dependency   S.
  • 33. ©Silberschatz, Korth and Sudarshan Canonical Cover  Sets of functional dependencies may have redundant dependencies that can be inferred from the others  Eg: A  C is redundant in: {A  B, B  C, A  C}  Parts of a functional dependency may be redundant  E.g. on RHS: {A  B, B  C, A  CD} can be simplified to {A  B, B  C, A  D}  E.g. on LHS: {A  B, B  C, AC  D} can be simplified to {A  B, B  C, A  D}  Intuitively, a canonical cover of F is a “minimal” set of functional dependencies equivalent to F, having no redundant dependencies or redundant parts of dependencies
  • 34. ©Silberschatz, Korth and Sudarshan Extraneous Attributes  Consider a set F of functional dependencies and the functional dependency    in F.  Attribute A is extraneous in  if A   and F logically implies (F – {  })  {( – A)  }.  Attribute A is extraneous in  if A   and the set of functional dependencies (F – {  })  { ( – A)} logically implies F.  Note: implication in the opposite direction is trivial in each of the cases above, since a “stronger” functional dependency always implies a weaker one  Example: Given F = {A  C, AB  C }  B is extraneous in AB  C because {A  C, AB  C} logically implies A  C (I.e. the result of dropping B from AB  C).  Example: Given F = {A  C, AB  CD}  C is extraneous in AB  CD since AB  C can be inferred even after deleting C
  • 35. ©Silberschatz, Korth and Sudarshan Testing if an Attribute is Extraneous  Consider a set F of functional dependencies and the functional dependency    in F.  To test if attribute A   is extraneous in  1. compute ({} – A)+ using the dependencies in F 2. check that ({} – A)+ contains A; if it does, A is extraneous  To test if attribute A   is extraneous in  1. compute + using only the dependencies in F’ = (F – {  })  { ( – A)}, 2. check that + contains A; if it does, A is extraneous
  • 36. ©Silberschatz, Korth and Sudarshan Canonical Cover  A canonical cover for F is a set of dependencies Fc such that  F logically implies all dependencies in Fc, and  Fc logically implies all dependencies in F, and  No functional dependency in Fc contains an extraneous attribute, and  Each left side of functional dependency in Fc is unique.  To compute a canonical cover for F: repeat Use the union rule to replace any dependencies in F 1  1 and 1  1 with 1  1 2 Find a functional dependency    with an extraneous attribute either in  or in  If an extraneous attribute is found, delete it from    until F does not change  Note: Union rule may become applicable after some extraneous attributes have been deleted, so it has to be re-applied
  • 37. ©Silberschatz, Korth and Sudarshan Example of Computing a Canonical Cover  R = (A, B, C) F = {A  BC B  C A  B AB  C}  Combine A  BC and A  B into A  BC  Set is now {A  BC, B  C, AB  C}  A is extraneous in AB  C  Check if the result of deleting A from AB  C is implied by the other dependencies  Yes: in fact, B  C is already present!  Set is now {A  BC, B  C}  C is extraneous in A  BC  Check if A  C is logically implied by A  B and the other dependencies  Yes: using transitivity on A  B and B  C. – Can use attribute closure of A in more complex cases  The canonical cover is: A  B B  C
  • 38. ©Silberschatz, Korth and Sudarshan Goals of Normalization  Decide whether a particular relation R is in “good” form.  In the case that a relation R is not in “good” form, decompose it into a set of relations {R1, R2, ..., Rn} such that  each relation is in good form  the decomposition is a lossless-join decomposition  Our theory is based on:  functional dependencies  multivalued dependencies
  • 39. ©Silberschatz, Korth and Sudarshan Decomposition  Decompose the relation schema Lending-schema into: Branch-schema = (branch-name, branch-city,assets) Loan-info-schema = (customer-name, loan-number, branch-name, amount)  All attributes of an original schema (R) must appear in the decomposition (R1, R2): R = R1  R2  Lossless-join decomposition. For all possible relations r on schema R r = R1 (r) R2 (r)  A decomposition of R into R1 and R2 is lossless join if and only if at least one of the following dependencies is in F+:  R1  R2  R1  R1  R2  R2
  • 40. ©Silberschatz, Korth and Sudarshan Example of Lossy-Join Decomposition  Lossy-join decompositions result in information loss.  Example: Decomposition of R = (A, B) R2 = (A) R2 = (B) A B    1 2 1 A   B 1 2 r A(r) B(r) A (r) B (r) A B     1 2 1 2
  • 41. ©Silberschatz, Korth and Sudarshan Normalization Using Functional Dependencies  When we decompose a relation schema R with a set of functional dependencies F into R1, R2,.., Rn we want  Lossless-join decomposition: Otherwise decomposition would result in information loss.  No redundancy: The relations Ri preferably should be in either Boyce- Codd Normal Form or Third Normal Form.  Dependency preservation: Let Fi be the set of dependencies F+ that include only attributes in Ri.  Preferably the decomposition should be dependency preserving, that is, (F1  F2  …  Fn)+ = F+  Otherwise, checking updates for violation of functional dependencies may require computing joins, which is expensive.
  • 42. ©Silberschatz, Korth and Sudarshan Example  R = (A, B, C) F = {A  B, B  C)  Can be decomposed in two different ways  R1 = (A, B), R2 = (B, C)  Lossless-join decomposition: R1  R2 = {B} and B  BC  Dependency preserving  R1 = (A, B), R2 = (A, C)  Lossless-join decomposition: R1  R2 = {A} and A  AB  Not dependency preserving (cannot check B  C without computing R1 R2)
  • 43. ©Silberschatz, Korth and Sudarshan Testing for Dependency Preservation  To check if a dependency  is preserved in a decomposition of R into R1, R2, …, Rn we apply the following simplified test (with attribute closure done w.r.t. F)  result =  while (changes to result) do for each Ri in the decomposition t = (result  Ri)+  Ri result = result  t  If result contains all attributes in , then the functional dependency    is preserved.  We apply the test on all dependencies in F to check if a decomposition is dependency preserving  This procedure takes polynomial time, instead of the exponential time required to compute F+ and (F1  F2  …  Fn)+
  • 44. ©Silberschatz, Korth and Sudarshan Boyce-Codd Normal Form     is trivial (i.e.,   )   is a superkey for R A relation schema R is in BCNF with respect to a set F of functional dependencies if for all functional dependencies in F+ of the form   , where   R and   R, at least one of the following holds:
  • 45. ©Silberschatz, Korth and Sudarshan Example  R = (A, B, C) F = {A  B B  C} Key = {A}  R is not in BCNF  Decomposition R1 = (A, B), R2 = (B, C)  R1 and R2 in BCNF  Lossless-join decomposition  Dependency preserving
  • 46. ©Silberschatz, Korth and Sudarshan Testing for BCNF  To check if a non-trivial dependency   causes a violation of BCNF 1. compute + (the attribute closure of ), and 2. verify that it includes all attributes of R, that is, it is a superkey of R.  Simplified test: To check if a relation schema R is in BCNF, it suffices to check only the dependencies in the given set F for violation of BCNF, rather than checking all dependencies in F+.  If none of the dependencies in F causes a violation of BCNF, then none of the dependencies in F+ will cause a violation of BCNF either.  However, using only F is incorrect when testing a relation in a decomposition of R  E.g. Consider R (A, B, C, D), with F = { A B, B C}  Decompose R into R1(A,B) and R2(A,C,D)  Neither of the dependencies in F contain only attributes from (A,C,D) so we might be mislead into thinking R2 satisfies BCNF.  In fact, dependency A  C in F+ shows R2 is not in BCNF.
  • 47. ©Silberschatz, Korth and Sudarshan BCNF Decomposition Algorithm result := {R}; done := false; compute F+; while (not done) do if (there is a schema Ri in result that is not in BCNF) then begin let    be a nontrivial functional dependency that holds on Ri such that   Ri is not in F+, and    = ; result := (result – Ri )  (Ri – )  (,  ); end else done := true; Note: each Ri is in BCNF, and decomposition is lossless-join.
  • 48. ©Silberschatz, Korth and Sudarshan Example of BCNF Decomposition  R = (branch-name, branch-city, assets, customer-name, loan-number, amount) F = {branch-name  assets branch-city loan-number  amount branch-name} Key = {loan-number, customer-name}  Decomposition  R1 = (branch-name, branch-city, assets)  R2 = (branch-name, customer-name, loan-number, amount)  R3 = (branch-name, loan-number, amount)  R4 = (customer-name, loan-number)  Final decomposition R1, R3, R4
  • 49. ©Silberschatz, Korth and Sudarshan Testing Decomposition for BCNF  To check if a relation Ri in a decomposition of R is in BCNF,  Either test Ri for BCNF with respect to the restriction of F to Ri (that is, all FDs in F+ that contain only attributes from Ri)  or use the original set of dependencies F that hold on R, but with the following test: – for every set of attributes   Ri, check that + (the attribute closure of ) either includes no attribute of Ri- , or includes all attributes of Ri.  If the condition is violated by some    in F, the dependency   (+ -  )  Ri can be shown to hold on Ri, and Ri violates BCNF.  We use above dependency to decompose Ri
  • 50. ©Silberschatz, Korth and Sudarshan BCNF and Dependency Preservation  R = (J, K, L) F = {JK  L L  K} Two candidate keys = JK and JL  R is not in BCNF  Any decomposition of R will fail to preserve JK  L It is not always possible to get a BCNF decomposition that is dependency preserving
  • 51. ©Silberschatz, Korth and Sudarshan Third Normal Form: Motivation  There are some situations where  BCNF is not dependency preserving, and  efficient checking for FD violation on updates is important  Solution: define a weaker normal form, called Third Normal Form.  Allows some redundancy (with resultant problems; we will see examples later)  But FDs can be checked on individual relations without computing a join.  There is always a lossless-join, dependency-preserving decomposition into 3NF.
  • 52. ©Silberschatz, Korth and Sudarshan Third Normal Form  A relation schema R is in third normal form (3NF) if for all:    in F+ at least one of the following holds:     is trivial (i.e.,   )   is a superkey for R  Each attribute A in  –  is contained in a candidate key for R. (NOTE: each attribute may be in a different candidate key)  If a relation is in BCNF it is in 3NF (since in BCNF one of the first two conditions above must hold).  Third condition is a minimal relaxation of BCNF to ensure dependency preservation (will see why later).
  • 53. ©Silberschatz, Korth and Sudarshan 3NF (Cont.)  Example  R = (J, K, L) F = {JK  L, L  K}  Two candidate keys: JK and JL  R is in 3NF JK  L JK is a superkey L  K K is contained in a candidate key  BCNF decomposition has (JL) and (LK)  Testing for JK  L requires a join  There is some redundancy in this schema  Equivalent to example in book: Banker-schema = (branch-name, customer-name, banker-name) banker-name  branch name branch name customer-name  banker-name
  • 54. ©Silberschatz, Korth and Sudarshan Testing for 3NF  Optimization: Need to check only FDs in F, need not check all FDs in F+.  Use attribute closure to check for each dependency   , if  is a superkey.  If  is not a superkey, we have to verify if each attribute in  is contained in a candidate key of R  this test is rather more expensive, since it involve finding candidate keys  testing for 3NF has been shown to be NP-hard  Interestingly, decomposition into third normal form (described shortly) can be done in polynomial time
  • 55. ©Silberschatz, Korth and Sudarshan 3NF Decomposition Algorithm Let Fc be a canonical cover for F; i := 0; for each functional dependency    in Fc do if none of the schemas Rj, 1  j  i contains   then begin i := i + 1; Ri :=   end if none of the schemas Rj, 1  j  i contains a candidate key for R then begin i := i + 1; Ri := any candidate key for R; end return (R1, R2, ..., Ri)
  • 56. ©Silberschatz, Korth and Sudarshan 3NF Decomposition Algorithm (Cont.)  Above algorithm ensures:  each relation schema Ri is in 3NF  decomposition is dependency preserving and lossless-join
  • 57. ©Silberschatz, Korth and Sudarshan Example  Relation schema: Banker-info-schema = (branch-name, customer-name, banker-name, office-number)  The functional dependencies for this relation schema are: banker-name  branch-name office-number customer-name branch-name  banker-name  The key is: {customer-name, branch-name}
  • 58. ©Silberschatz, Korth and Sudarshan Applying 3NF to Banker-info-schema  The for loop in the algorithm causes us to include the following schemas in our decomposition: Banker-office-schema = (banker-name, branch-name, office-number) Banker-schema = (customer-name, branch-name, banker-name)  Since Banker-schema contains a candidate key for Banker-info-schema, we are done with the decomposition process.
  • 59. ©Silberschatz, Korth and Sudarshan Comparison of BCNF and 3NF  It is always possible to decompose a relation into relations in 3NF and  the decomposition is lossless  the dependencies are preserved  It is always possible to decompose a relation into relations in BCNF and  the decomposition is lossless  it may not be possible to preserve dependencies.
  • 60. ©Silberschatz, Korth and Sudarshan Comparison of BCNF and 3NF (Cont.) J j1 j2 j3 null L l1 l1 l1 l2 K k1 k1 k1 k2 A schema that is in 3NF but not in BCNF has the problems of  repetition of information (e.g., the relationship l1, k1)  need to use null values (e.g., to represent the relationship l2, k2 where there is no corresponding value for J).  Example of problems due to redundancy in 3NF  R = (J, K, L) F = {JK  L, L  K}
  • 61. ©Silberschatz, Korth and Sudarshan Design Goals  Goal for a relational database design is:  BCNF.  Lossless join.  Dependency preservation.  If we cannot achieve this, we accept one of  Lack of dependency preservation  Redundancy due to use of 3NF  Interestingly, SQL does not provide a direct way of specifying functional dependencies other than superkeys. Can specify FDs using assertions, but they are expensive to test  Even if we had a dependency preserving decomposition, using SQL we would not be able to efficiently test a functional dependency whose left hand side is not a key.
  • 62. ©Silberschatz, Korth and Sudarshan Overall Database Design Process  We have assumed schema R is given  R could have been generated when converting E-R diagram to a set of tables.  R could have been a single relation containing all attributes that are of interest (called universal relation).  Normalization breaks R into smaller relations.  R could have been the result of some ad hoc design of relations, which we then test/convert to normal form.
  • 63. ©Silberschatz, Korth and Sudarshan ER Model and Normalization  When an E-R diagram is carefully designed, identifying all entities correctly, the tables generated from the E-R diagram should not need further normalization.  However, in a real (imperfect) design there can be FDs from non-key attributes of an entity to other attributes of the entity  E.g. employee entity with attributes department-number and department-address, and an FD department-number  department- address  Good design would have made department an entity  FDs from non-key attributes of a relationship set possible, but rare --- most relationships are binary