Functional dependency (FD) defines constraints between attributes in a database, indicating that if two tuples share values for certain attributes, they must also share values for others. Various types of functional dependencies exist, including trivial, non-trivial, fully functional, transitive, and multivalued dependencies. Normalization is the process of organizing data in a database to minimize redundancy and avoid anomalies, adhering to different normal forms, including 1NF, 2NF, 3NF, and BCNF.