Explain the concepts of database normalization and denormalization. In what scenarios would you choose one over the other?