Computer Science Volume 1 Silberschatz−Korth−Sudarshan • Database System Concepts, Fourth Edition Front Matter 1 Preface 1 1. Introduction 11 Text 11 I. Data Models 35 Introduction 2. Entity−Relationship Model 3. Relational Model 35 36 87 II. Relational Databases 140 Introduction 4. SQL 5. Other Relational Languages 6. Integrity and Security 7. Relational−Database Design 140 141 194 229 260 III. Object−Based Databases and XML 307 Introduction 8. Object−Oriented Databases 9. Object−Relational Databases 10. XML 307 308 337 363 IV. Data Storage and Querying 393 Introduction 11. Storage and File Structure 12. Indexing and Hashing 13. Query Processing 14. Query Optimization 393 394 446 494 529 V. Transaction Management 563 Introduction 15. Transactions 16. Concurrency Control 17. Recovery System 563 564 590 637 iii
VI. Database System Architecture 679 Introduction 18. Database System Architecture 19. Distributed Databases 20. Parallel Databases 679 680 705 750 VII. Other Topics 773 Introduction 21. Application Development and Administration 22. Advanced Querying and Information Retrieval 23. Advanced Data Types and New Applications 24. Advanced Transaction Processing 773 774 810 856 884 iv
Silberschatz−Korth−Sudarshan: Database System Concepts, Fourth Edition Front Matter Preface 1 © The McGraw−Hill Companies, 2001 Preface Database management has evolved from a specialized computer application to a central component of a modern computing environment, and, as a result, knowledge about database systems has become an essential part of an education in computer science. In this text, we present the fundamental concepts of database management. These concepts include aspects of database design, database languages, and database-system implementation. This text is intended for a ﬁrst course in databases at the junior or senior undergraduate, or ﬁrst-year graduate, level. In addition to basic material for a ﬁrst course, the text contains advanced material that can be used for course supplements, or as introductory material for an advanced course. We assume only a familiarity with basic data structures, computer organization, and a high-level programming language such as Java, C, or Pascal. We present concepts as intuitive descriptions, many of which are based on our running example of a bank enterprise. Important theoretical results are covered, but formal proofs are omitted. The bibliographical notes contain pointers to research papers in which results were ﬁrst presented and proved, as well as references to material for further reading. In place of proofs, ﬁgures and examples are used to suggest why a result is true. The fundamental concepts and algorithms covered in the book are often based on those used in existing commercial or experimental database systems. Our aim is to present these concepts and algorithms in a general setting that is not tied to one particular database system. Details of particular commercial database systems are discussed in Part 8, “Case Studies.” In this fourth edition of Database System Concepts, we have retained the overall style of the ﬁrst three editions, while addressing the evolution of database management. Several new chapters have been added to cover new technologies. Every chapter has been edited, and most have been modiﬁed extensively. We shall describe the changes in detail shortly. xv
2 Silberschatz−Korth−Sudarshan: Database System Concepts, Fourth Edition xvi Front Matter Preface © The McGraw−Hill Companies, 2001 Preface Organization The text is organized in eight major parts, plus three appendices: • Overview (Chapter 1). Chapter 1 provides a general overview of the nature and purpose of database systems. We explain how the concept of a database system has developed, what the common features of database systems are, what a database system does for the user, and how a database system interfaces with operating systems. We also introduce an example database application: a banking enterprise consisting of multiple bank branches. This example is used as a running example throughout the book. This chapter is motivational, historical, and explanatory in nature. • Data models (Chapters 2 and 3). Chapter 2 presents the entity-relationship model. This model provides a high-level view of the issues in database design, and of the problems that we encounter in capturing the semantics of realistic applications within the constraints of a data model. Chapter 3 focuses on the relational data model, covering the relevant relational algebra and relational calculus. • Relational databases (Chapters 4 through 7). Chapter 4 focuses on the most inﬂuential of the user-oriented relational languages: SQL. Chapter 5 covers two other relational languages, QBE and Datalog. These two chapters describe data manipulation: queries, updates, insertions, and deletions. Algorithms and design issues are deferred to later chapters. Thus, these chapters are suitable for introductory courses or those individuals who want to learn the basics of database systems, without getting into the details of the internal algorithms and structure. Chapter 6 presents constraints from the standpoint of database integrity and security; Chapter 7 shows how constraints can be used in the design of a relational database. Referential integrity; mechanisms for integrity maintenance, such as triggers and assertions; and authorization mechanisms are presented in Chapter 6. The theme of this chapter is the protection of the database from accidental and intentional damage. Chapter 7 introduces the theory of relational database design. The theory of functional dependencies and normalization is covered, with emphasis on the motivation and intuitive understanding of each normal form. The overall process of database design is also described in detail. • Object-based databases and XML (Chapters 8 through 10). Chapter 8 covers object-oriented databases. It introduces the concepts of object-oriented programming, and shows how these concepts form the basis for a data model. No prior knowledge of object-oriented languages is assumed. Chapter 9 covers object-relational databases, and shows how the SQL:1999 standard extends the relational data model to include object-oriented features, such as inheritance, complex types, and object identity.