Database normalization is the process of organizing data in tables to minimize redundancy and dependency. It involves splitting tables into smaller tables and defining relationships between them using primary and foreign keys. There are various normal forms that quantify how normalized a database is, with third normal form being sufficient for most applications. Edgar Codd first proposed normalization and the first normal form, which requires that tables have a primary key and each attribute depend on the key. Higher normal forms like second and third further reduce redundancy between columns and tables.