Functional Dependencies - Answers Let X and Y be sets of attributes in R. Y is functionally dependent on
X in R iff for each x in RX, there is precisely one y in RY.
_________ determines _______
X --> Y
Email --> BirthYear, CurrentCity, Salary
Questions to ask about normalization - Answers Is this relation laid out in such a manner that it is easy to
enforce the functional dependencies that we want to enforce in the database?
How do we normalize the relation (or decompose into smaller relations) without information loss and so
that the functional dependencies can be enforced?
Rules for normalization - Answers no redundancy
no cluttering of facts
must preserve information
must preserve functional dependencies
What is not a relation? - Answers Non-first normal form data structures
can contain multivalued attributes
values of attributes in relations are pulled from sets of atomic values
What to do with multivalued attributes? - Answers Repeat the key for each multivalue attribute
i.e., if user1 has 3 interests with 3 since ages, turn the 1 row into 3
Problems to look for with normalization - Answers Redundancy
, Insertion anomaly
Deletion anomaly
Update anomaly
Redundancy - Answers Leads to inconsistency
Database can be useless from the point of view of understanding repetitive fields
Insertion anomaly - Answers occurs when certain attributes cannot be inserted into the database
without the presence of other attributes, leads to many NULL values or duplicates
Deletion anomaly - Answers deleting rows may cause a loss of data that would be needed for other
future rows
Update anomaly - Answers improper database organization where a non-primary key item is stored
multiple times; updating the item in one location and not the others causes data inconsistencies
redundant data may not be properly updated
Information loss in normalization - Answers getting more or less information from decomposing a
relation into smaller tables that doesn't reflect reality
Dependency Loss in normalization - Answers If we decompose a table into multiple tables, then we
cannot enforce the functional dependencies, or may lose the ability to enforce them, that are split
between the two relations
dependencies should be together in the tables (Except transitive)
A perfect decomposition has - Answers no redundancies
no insertion anomalies
no deletion anomalies
no update anomalies
no information loss
no dependency loss
the idea is to decompose and if we need to see the original view, we join the decomposed tables