The structure of data has always been an important part of software design. At the program-component level, the design of data structures and the associated algorithms required to manipulate them is essential to the creation of high-quality applications. At the application level. the translation of a data model (derived as part of requirements engineering) into a database is pivotal to achieving the business objectives of a system. At the business level, the collection of information stored in disparate databases and reorganized into a “data warehouse" enables data mining or knowledge discovery that can have an impact onthe success of the business itself. I.n every case, data design plays an important role. Data design is discussed in more detail in Chapter 13.