This course examines the underlying concepts and theory of database management systems. Topics include database system architectures, data models, query languages, conceptual and logical database design, physical organization, and transaction management. The entity-relationship model and relational model are investigated in detail, object-oriented databases are introduced, and legacy systems based on the network and hierarchical models are briefly described. Mappings from the conceptual level to the logical level, integrity constraints, dependencies, and normalization are studied as a basis for formal design. Theoretical languages such as the relational algebra and the relational calculus are described, and high-level languages such as SQL and QBE are discussed. An overview of file organization and access methods is provided as a basis for discussion of heuristic query optimization techniques. Finally, transaction processing techniques are presented with a specific emphasis on concurrency control and database recovery.