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

PDF
Functional dependency and normalization
PPTX
Functional dependancy
PPTX
Functional dependencies in Database Management System
PPSX
Functional dependency
DOCX
Chapter-3 Data Modeling Using the Entity-Relationship Model
PPT
Data Structures- Part5 recursion
PPTX
Decomposition methods in DBMS
PPTX
Insertion in singly linked list
Functional dependency and normalization
Functional dependancy
Functional dependencies in Database Management System
Functional dependency
Chapter-3 Data Modeling Using the Entity-Relationship Model
Data Structures- Part5 recursion
Decomposition methods in DBMS
Insertion in singly linked list

What's hot (20)

PPT
Data modeling using the entity relationship model
PPT
Data dictionaries
PPTX
1.4 data independence
PDF
2 database system concepts and architecture
PPT
Data structure
PPTX
Sql fundamentals group by part2
PPT
Chapter10 conceptual data modeling
PPTX
B+ trees and height balance tree
PPT
Entity Relationship Diagram
PDF
Basic blocks and flow graph in Compiler Construction
PPTX
Integrity Constraints
PPTX
ER model to Relational model mapping
PPTX
Advanced SQL
DOCX
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...
PPT
Normalization
PPTX
Introduction to database
PPT
Database concepts
PPTX
Fuzzy logic Notes AI CSE 8th Sem
PPTX
Ppt of dbms e r features
PDF
Query optimization in SQL
Data modeling using the entity relationship model
Data dictionaries
1.4 data independence
2 database system concepts and architecture
Data structure
Sql fundamentals group by part2
Chapter10 conceptual data modeling
B+ trees and height balance tree
Entity Relationship Diagram
Basic blocks and flow graph in Compiler Construction
Integrity Constraints
ER model to Relational model mapping
Advanced SQL
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...
Normalization
Introduction to database
Database concepts
Fuzzy logic Notes AI CSE 8th Sem
Ppt of dbms e r features
Query optimization in SQL
Ad

Similar to ch7-clean.ppt (20)

PPT
DBMS-Unit-3.0 Functional dependencies.ppt
PPT
UNIT-IV.ppt
PPT
basic concepts of Entity relationship diagram
PPTX
Normalization.pptx Functional dependence
PPT
Normalization_dsa_project_easy_with_graph.ppt
PPT
Function Dependencies and Normalization
PPT
DBMS MODULE-5 normalisation in database management
PPTX
Fd & Normalization - Database Management System
PPT
Normalization by Sanu
PDF
PPTX
DBMS_Module 3_Functional Dependencies and Normalization.pptx
PDF
Normalization.pdf
PPT
NORMALIZATION in database management systems
PPTX
Basics of Functional Dependencies and Normalization for Relational Databases....
PPT
Chapter10in normalization for Data base management system .ppt
PDF
L8 design1
PPT
Normalization
PDF
DBMS unit-3.pdf
PPT
Chapter14
DBMS-Unit-3.0 Functional dependencies.ppt
UNIT-IV.ppt
basic concepts of Entity relationship diagram
Normalization.pptx Functional dependence
Normalization_dsa_project_easy_with_graph.ppt
Function Dependencies and Normalization
DBMS MODULE-5 normalisation in database management
Fd & Normalization - Database Management System
Normalization by Sanu
DBMS_Module 3_Functional Dependencies and Normalization.pptx
Normalization.pdf
NORMALIZATION in database management systems
Basics of Functional Dependencies and Normalization for Relational Databases....
Chapter10in normalization for Data base management system .ppt
L8 design1
Normalization
DBMS unit-3.pdf
Chapter14
Ad

Recently uploaded (20)

PPT
INTRODUCTION -Data Warehousing and Mining-M.Tech- VTU.ppt
PDF
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
PDF
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
PDF
Integrating Fractal Dimension and Time Series Analysis for Optimized Hyperspe...
PDF
Soil Improvement Techniques Note - Rabbi
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PDF
737-MAX_SRG.pdf student reference guides
PDF
PPT on Performance Review to get promotions
PPTX
UNIT - 3 Total quality Management .pptx
PPT
A5_DistSysCh1.ppt_INTRODUCTION TO DISTRIBUTED SYSTEMS
PPTX
Fundamentals of Mechanical Engineering.pptx
PPTX
UNIT 4 Total Quality Management .pptx
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PPTX
Nature of X-rays, X- Ray Equipment, Fluoroscopy
PPTX
communication and presentation skills 01
PDF
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
PPTX
introduction to high performance computing
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
INTRODUCTION -Data Warehousing and Mining-M.Tech- VTU.ppt
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
Integrating Fractal Dimension and Time Series Analysis for Optimized Hyperspe...
Soil Improvement Techniques Note - Rabbi
III.4.1.2_The_Space_Environment.p pdffdf
737-MAX_SRG.pdf student reference guides
PPT on Performance Review to get promotions
UNIT - 3 Total quality Management .pptx
A5_DistSysCh1.ppt_INTRODUCTION TO DISTRIBUTED SYSTEMS
Fundamentals of Mechanical Engineering.pptx
UNIT 4 Total Quality Management .pptx
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Nature of X-rays, X- Ray Equipment, Fluoroscopy
communication and presentation skills 01
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
introduction to high performance computing
Automation-in-Manufacturing-Chapter-Introduction.pdf

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