(1) To concentrate on issues central to the design, tuning and implementation of database applications.
(2) To provide adequate coverage of implementation topics to support a concurrent laboratory section or course project. For example, implementation of relational operations has been covered in more detail than is necessary in a first course. However, the variety of alternative implementation techniques allows for a wide choice of project assignments: an instructor who wishes to assign implementation of Sort-Merge Join might cover that topic in depth, whereas another might choose to emphasize Index Nested Loops Join.
1. Part A: Relational Model Concepts Query languages (relational algebra and calculus, QBE and SQL), integrity constraints, views, security. The coverage of SQL follows the SQL-92 standard, and is extensive; in addition to the data retrieval features of SQL, many important concepts, such as authorization, views and referential integrity, are discussed in the context of SQL.
2. Part B: Storage and Indexing Disks, tapes, buffer management, record/page and file formats, file organizations and indexes. This part depends only on Chapter 3, and this is only to the extent that implementing a file organization requires an understanding of file and record formats.
3. Part C: Query Optimization and Evaluation Implementation of relational operators and generation of query plans. The treatment of these topics is sufficiently detailed to allow projects involving operator implementation, and provides the necessary background to explore optimization issues using the optimizer visualization tool of Minibase.
4. Part D: Database Design This is one of the focal points of the book. Conceptual design, normalization, physical design and performance tuning are discussed in detail. The discussion of the ER model concentrates on the alternatives available for modelling an enterprise (e.g., attribute vs. entity, binary vs. ternary relationships, etc.) and includes generation of SQL-92 Create Table statements from ER diagrams. The discussion of normalization stresses the role of conceptual design and underscores the need for refining an initial relational design obtained from ER diagrams. In an important sense, the first three parts of the book lead up to the material on database design and tuning. I discuss these topics from a very practical perspective, with several examples. A reader who studies this material carefully will quickly realize that a thorough understanding of several basic issues is essential for good design. The goal is to ensure that the earlier chapters provide the reader with the necessary foundation; this is the reason for the relatively late introduction of the ER model. The dependence of Part D on earlier material is summarized below: The discussion of how to translate an ER diagram into a collection of SQL table definitions assumes an understanding of the integrity constraint features of SQL-92. A basic knowledge of views is useful in discussing conceptual database design. Other than this, the chapter on the ER model is independent of Part A. The discussion of physical design and tuning assumes a good understanding of query optimization, and in particular, of the use of indexes.
5. Part E: Transaction Processing Concurrency control and recovery are covered with an emphasis on locking and logging techniques. The discussion of concurrency control in tree indexes depends upon a knowledge of tree indexes.
6. Part F: Advanced Topics The discussion of query optimization in parallel and distributed databases assumes an understanding of query optimization in a centralized DBMS. In general, the chapters in Part F should be covered after material from the other parts has been covered. Chapters on Object Databases, Rule-Based Extensions to Relational Databases, Decision Support, and Additional Topics are not included in this beta edition, but will be there in the first regular edition.
Some additional points to note:
Several section headings contain an asterisk. This does not necessarily indicate a higher level of difficulty. Rather, omitting all asterisked sections leaves about the right amount of material in Chapters 1 through 19 for a broad introductory one-quarter or one-semester course (depending on the depth at which the remaining material is discussed and the nature of the course assignments).
It is not necessary to cover all the alternatives for a given operator in order to cover query optimization adequately.
The material on SQL queries can be taught without first covering relational algebra and calculus. This may be desirable if an instructor wishes to assign SQL assignments early. However, an understanding of algebra and calculus will enable students to appreciate the foundations of SQL. Similarly, QBE can be taught without a prior discussion of DRC, but briefly covering DRC first is recommended.
An instructor who wishes to cover the ER model before SQL can do so by deferring a discussion of ER-diagram-to-SQL-table translation. Indeed, the ER model can be covered before the relational model by exercising some care in the discussion of integrity constraints.
The book contains more material than can be covered in a one semester course. It can be used in several kinds of introductory or second courses by choosing topics appropriately, or in a two-course sequence by supplementing the material with some advanced readings in the second course.
December 10, 1996
Raghu Ramakrishnan [raghu@cs.wisc.edu]