This project focuses on research in three areas: Query Optimization, Active Databases, and Learning mechanisms for relational database management systems. Query optimization is necessary to provide fast access to large databases; in this project, techniques that allow the optimization of multiple queries, thus providing higher throughput for the system are developed and implemented in a prototype system. In contrast to the traditional single command-at-a-time optimization, a multiple-query processing strategy avoids redundant page accesses by accessing data common to more than one query, only once. The research on Active databases investigates methods that allow the specification, efficient monitoring and processing of triggers in relational systems. Such methods are essential in contemporary systems and allow the database management system to "react" to changes performed. The use of machine learning is explored at the buffer management and query optimization levels in order to improve the performance of database systems. In particular, schemes that will adapt the above sub-systems based on the query and user environment, are investigated. The contributions of the research in the above three areas lie in improving performance of relational database systems in contemporary applications, such as deductive and engineering databases.