The output of parsing is a logical representation of the statement called a parse tree. This tree does not contain SQL language elements. It’s an abstraction of the logical elements of the original query specification.
It’s frequently possible to write the same logical requirement in different ways. Using a SQL analogy,
x IN (4, 8)is logically the same as writing
x = 4 OR x = 8. This flexibility can be useful when writing queries, but it makes implementing an optimizer more difficult.
In general terms, normalization is an attempt to standardize. It recognises common variations expressing the same logic, and rewrites them in a standard way. For example, normalization is responsible for turning
x BETWEEN y AND zinto
x >= y AND x <= z. The normalized, or standardized, form chosen is one the query processor finds convenient to work with internally.
This has been a very interesting series and Paul does promise one more article.