The conversion of data held in objects to a form that can be stored in a relational database and vice versa. This is a common activity; many programs need to persist their data and using a relational database is often an appropriate way to do this. However, the strict rules of relational database design mean that mapping the more flexible data structures natural to object-oriented languages onto a database can be an intricate and time-consuming operation. Software packages exist that create the necessary code automatically, the result being in effect an object-oriented database. See also object-relational database management system.