This document discusses database normalization and functional dependencies. It defines functional dependencies and describes how to identify them. The goals of normalization are to avoid redundant data, ensure relationships between attributes are represented, and facilitate checking updates. Normalization is done in steps to produce relations in first normal form, second normal form, third normal form and higher. Functional dependencies are used to test for superkeys and check if other dependencies are implied. The document also covers closure of attribute sets and computing the canonical cover of a set of dependencies.