Database normalization involves decomposing schemas into subschemas to reduce data redundancy and improve data integrity. It makes use of primary and foreign keys. Primary keys uniquely identify rows in a table and cannot contain null values, while foreign keys in child tables reference primary keys in parent tables. Database adapters allow executing SQL commands and procedures from Java code by providing a configured connection to the database through a JNDI data source. Key steps in using a database adapter include creating a JNDI data source, configuring the adapter to use that data source, and then dragging the adapter into a SOA project to execute SQL operations.