0% found this document useful (0 votes)
1 views

Normalization Gfgc

The document discusses the principles of functional dependencies and normalization in relational database design, emphasizing the importance of creating 'good' relation schemas to avoid issues like redundancy and update anomalies. It outlines various normal forms (1NF, 2NF, 3NF, BCNF, 4NF, and 5NF) and their definitions, as well as the role of functional dependencies in ensuring data integrity. Additionally, it provides examples of anomalies and the necessity of designing schemas that minimize NULL values and spurious tuples.

Uploaded by

hegdeshama815
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views

Normalization Gfgc

The document discusses the principles of functional dependencies and normalization in relational database design, emphasizing the importance of creating 'good' relation schemas to avoid issues like redundancy and update anomalies. It outlines various normal forms (1NF, 2NF, 3NF, BCNF, 4NF, and 5NF) and their definitions, as well as the role of functional dependencies in ensuring data integrity. Additionally, it provides examples of anomalies and the necessity of designing schemas that minimize NULL values and spurious tuples.

Uploaded by

hegdeshama815
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 44

Functional Dependencies and

Normalization for Relational


Databases
Informal Design Guidelines for
Relational Databases
 Relational database design means grouping
of attributes to form "good" relation schemas
 We can design "good" relations by
 Informal guidelines
 Formal guidelines using concepts of functional
dependencies and normal forms 1NF, 2NF, 3NF
BCNF , 4NF and 5NF
Impart clear Semantics of the
Relation Attributes
 Each tuple in a relation should represent one
entity or relationship instance
 Design a schema that can be explained easily
relation by relation. The semantics of attributes
should be easy to interpret.
Redundant Information in
Tuples and Update
Anomalies
 Attributes of multiple entities may cause
problems
 Information is stored redundantly wasting
storage
 Problems with update anomalies:
 Insertionanomalies
 Deletion anomalies

 Modification anomalies
EXAMPLE OF AN UPDATE
ANOMALY
Consider the relation:
EMP_PROJ ( Emp#, Proj#, Ename, Pname, No_hours)
 Update Anomaly
 Changing the name of project number P1 from “Billing” to
“Customer-Accounting” may cause this update to be made for all
100 employees working on project P1
 Insert Anomaly
 Cannot insert a project unless an employee is assigned to .
 Inversely- Cannot insert an employee unless he/she is assigned to

a project.
EXAMPLE OF AN UPDATE
ANOMALY (2)
 Delete Anomaly
 When a project is deleted, it will result in deleting all the
employees who work on that project. Alternately, if an employee
is the sole employee on a project, deleting that employee would
result in deleting the corresponding project.
 Design a schema that does not suffer from the
insertion, deletion and update anomalies. If there
are any present, then note them so that applications
can be made to take them into account
Null Values in Tuples

 Relations should be designed such that their tuples


will have as few NULL values as possible
 Attributes that are NULL frequently could be placed in
separate relations (with the primary key)
 Reasons for nulls:
 a. attribute not applicable or invalid
 b. attribute value unkown (may exist)
 c. value known to exist, but unavailable
Spurious Tuples

 The "lossless join" property is used to


guarantee meaningful results for join
operations
 The relations should be designed to satisfy
the lossless join condition. No spurious
tuples should be generated by doing a
natural-join of any relations
Functional Dependencies

 Functional dependencies (FDs) are used to


specify formal measures as a tool for
designing good relational designs
 FDs and keys are used to define normal
forms for relations
 FDs are constraints that are derived from
the meaning and interrelationships of the
data attributes
Functional Dependencies (2)
 A set of attributes X functionally determines a set of
attributes Y if the value of X determines a unique value for
Y
 X Y holds if whenever two tuples have the same value for
X, they must have the same value for Y
If t1[X]=t2[X], then t1[Y]=t2[Y] in any relation instance r(R)
 X  Y in R specifies a constraint on all relation instances
r(R)
 FDs are derived from the real-world constraints on the
attributes
Examples of FD constraints

 Social Security Number determines employee name


SSN  ENAME
 Project Number determines project name and
location
PNUMBER  {PNAME, PLOCATION}
 Employee SSN and project number determines the
hours per week that the employee works on the
project
{SSN, PNUMBER}  HOURS
Functional Dependencies (3)

 An FD is a property of the attributes in the


schema R
 The constraint must hold on every relation
instance r(R)
 If K is a key of R, then K functionally
determines all attributes in R (since we never
have two distinct tuples with t1[K]=t2[K])
Inference Rules for FDs

 Given a set of FDs F, we can infer additional FDs


that hold whenever the FDs in F hold
 Armstrong's inference rules
A1. (Reflexive) If Y subset-of X, then X  Y
A2. (Augmentation) If X  Y, then XZ  YZ
(Notation: XZ stands for X U Z)
A3. (Transitive) If X  Y and Y  Z, then X  Z
 A1, A2, A3 form a sound and complete set of
inference rules
Additional Useful Inference
Rules
 Decomposition
 If X  YZ, then X  Y and X  Z
 Union
 If X  Y and X  Z, then X  YZ
 Psuedotransitivity
 If X  Y and WY  Z, then WX  Z
Introduction to
Normalization
 Normalization: Process of decomposing
unsatisfactory "bad" relations by breaking up their
attributes into smaller relations
 Normal form: Condition using keys and FDs of a
relation to certify whether a relation schema is in a
particular normal form
 2NF, 3NF, BCNF based on keys and FDs of a relation
schema
 4NF based on keys, multi-valued dependencies
First Normal Form

 A table is said to be in First Normal Form


(1NF) if and only if each attribute of the
relation is atomic.
 Disallows [composite attributes, multivalued
attributes, and nested relations]
Second Normal Form

 Uses the concepts of FDs, primary key


 Definitions:
 Prime attribute - attribute that is member of the
primary key K
 Full functional dependency - a FD Y  Z
where removal of any attribute from Y means the
FD does not hold any more
 A relation is said to be in a second normal form if
and only if,
 it's in first normal form
 Every non-key attributes are identified by the use of
primary key
 All subset of data, which applies to have multiple rows in
a table must be removed and placed in a new table. And
this new table and the parent table should be related by
the use of foreign key.
Examples
Second Normal Form
 {SSN, PNUMBER}  HOURS is a full FD since neither
SSN  HOURS nor PNUMBER  HOURS hold
 {SSN, PNUMBER}  ENAME is not a full FD (it is
called a partial dependency ) since SSN  ENAME also
holds
 A relation schema R is in second normal form (2NF) if
every non-prime attribute A in R is fully functionally
dependent on the primary key
 R can be decomposed into 2NF relations via the process
of 2NF normalization
Third Normal Form
 Definition
 Transitive functional dependency – if there a set of
attribute Z that are neither a primary or candidate key
and both X  Z and Y  Z holds.
OR
 A functional dependency is said to be transitive if it is indirectly formed
by two functional dependencies. For e.g.
 X -> Z is a transitive dependency if the following three functional
dependencies hold true:
 X->Y
 Y does not ->X
 Y->Z
Third Normal Form

 Examples:
 SSN  DMGRSSN is a transitive FD since
SSN  DNUMBER and DNUMBER  DMGRSSN hold

 SSN  ENAME is non-transitive since there is no set


of attributes X where SSN  X and X  ENAME
•STREET and CITY have no relation with Student , They fully
depend upon zip code. Hence the relation should be broken
3rd Normal Form

A relation schema R is in third normal form


(3NF) if it is in 2NF and no non-prime
attribute A in R is transitively dependent on
the primary key
BCNF (Boyce-Codd Normal
Form)
 A relation schema R is in Boyce-Codd Normal
Form (BCNF) if whenever an FD X  A holds in
R, then X is a superkey of R
 Each normal form is strictly stronger than the previous
one:
 Every 2NF relation is in 1NF
 Every 3NF relation is in 2NF

 Every BCNF relation is in 3NF

 There exist relations that are in 3NF but not in BCNF


 The goal is to have each relation in BCNF (or 3NF)
Any table is said to be in BCNF, if its
candidate keys do not have any partial
dependency on the other attributes. i.e.; in
any table with (x, y, z) columns, if (x, y)->z
and z->x then it's a violation of BCNF. If (x,
y) are composite keys and (x, y)->z, then
there should not be any reverse dependency,
directly or partially
(STUDENT_ID, MAJOR_SUBJECT) -> ADVISORY_LECTURER
ADVISORY_LECTURER -> MAJOR_SUBJECT
4NF

 It should meet all the requirement of 3NF


 Attribute of one or more rows in the table
should not result in more than one rows of
the same table leading to multi-valued
dependencies
SUBJECT --> LECTURER
SUBJECT-->BOOKS
Fifth Normal Form (5NF)

 A database is said to be in 5NF, if and only if,


 It's in 4NF
 If we can decompose table further to eliminate
redundancy and anomaly, and when we re-join the
decomposed tables by means of candidate keys, we
should not be losing the original data or any new
record set should not arise. In simple words, joining
two or more decomposed table should not lose
records nor create new records
Thank You

You might also like