TY - BOOK AU - O'Neil,Patrick TI - Database--principles, programming, and performance SN - 1558605800 (pbk.) U1 - 005.74 PY - 2001/// CY - San Francisco PB - Morgan Kaufmann Publishers KW - Database management N1 - Includes bibliographical references and index; 1.1 Fundamental Database Concepts History of Database Systems The Relational and Object-Relational Models The Database Systems Covered A Relational Database Example An Object-Relational Database Example 1.2 Database Users 1.3 Overview of Relational and Object-Relational DBMS Chapter 2: The Relational Model Chapter 3: Basic SQL Query Language Chapter 4: The Object-Relational Model Chapter 5: Programs to Access a Database Chapter 6: Database Design Chapter 7: Integrity, Views, Security, and Catalogs Chapter 8: Indexing Chapter 9: Query Processing Chapter 10: Update Transactions Chapter 11: Parallel and Distributed Databases 1.4 Putting It All Together The Relational Model 2.1 The CAP Database 2.2 Naming the Parts of a Database Domains and Datatypes Tables and Relations 2.3 Relational Rules 2.4 Keys. Superkeys. and Null Values Null Values 2.5 Relational Algebra Fundamental Operations of Relational Algebra 2.6 Set-Theoretic Operations The Union, Intersection, and Difference Operations Assignment and Alias The Product Operation 2.7 Native Relational Operations The Projection Operation The Selection Operation Precedence of Relational Operations The Join Operation The Division Operation 2.8 The Interdependence of Operations 2.9 Illustrative Examples 2.10 Other Relational Operations Outer Join Theta Join Basic SQL Query Language 3.1 Introduction SQL Capabilities SQL History—Standards and Dialects 3.2 Setting Up the Database Standard Typographical Conventions A Practical Exercise 3.3 Simple Select Statements 3.4 Subqueries 3.5 The IN Predicate The Quantified Comparison Predicate The EXISTS Predicate A Weakness of SQL: Too Many Equivalent Forms UNION Operators and FOR ALL Conditions The UNION Operator Division: SQL "FOR ALL " Conditions 3.6 Some Advanced SQL Syntax The INTERSECT and EXCEPT Operators in Advanced SQL Join Forms in Advanced SQL OUTER JOIN Join Forms Implemented in Database Systems 3.7 Set Functions in SQL Handling Null Values 3.8 Groups of Rows in SQL 3.9 A Complete Description of SQL Select Identifiers Expressions, Predicates, and the search_condition Scalar Subqueries as Expressions: Advanced SQL SQL versus Advanced SQL: Summary A Discussion of the Predicates 3.10 Insert, Update, and Delete Statements The Insert Statement The Update Statement The Delete Statement 3.11 The Power of the Select Statement The Non-Procedural Select Statement Turing Power Limited Power of the Basic SQL Select Statement Object-Relational SQL 4.1 Introduction ORSQL Capabilities Form of Presentation for This Chapter Object-Relational History 4.2 Objects and Tables 4.2.1 Object Types in ORACLE Definition of the REF Object Reference 4.2.2 INFORMIX Row Types for Objects Absence of REFs in INFORMIX Type Inheritance in INFORMIX 4.2.3 Objects and Tables: Summary Object Orientation 4.3 Collection Types 4.3.1 Collection Tjqses in ORACLE Table Types and Nested Tables Two Techniques for Retrieving from a Table of Tables Unnesting via Table Products Nested Cursors Array Types for VARRAYs SQL Syntax for Collections in ORACLE Inserts and Updates in ORACLE 4.3.2 Collection Types in INFORMIX Sets in INFORMIX Lists in INFORMIX SQL Syntax for Collections in INFORMIX Inserts and Updates in INFORMIX 4.3.3 Collection Types: Summary 4.4 Procedural SQL, User-Defined Functions (UDFs), and Methods 4.4.1 ORACLE PL/SQL Procedures. UDFs, and Methods PL/SQL: ORACLE'S Procedural SQL Language Using PL/SQL to Implement Methods in ORACLE Update Methods 4.4.2 INFORMIX User-Defined Functions SPL: INFORMIX'S Procedural SQL Language Using SPL to Implement UDFs in INFORMIX Update Functions 4.4.3 User-Defined Functions: Summary 4.5 External Functions and Packaged User-Defined Types (UDTs) Binary Data and BLOBs External Functions Encapsulation Distinct Types BLOB Objects Packaged UDTs and Other Encapsulated UDTs Summary Programs to Access a Database 5.1 Introduction to Embedded SQL in C A Simple Program Using Embedded SQL Selecting Multiple Rows with a Cursor 5.2 Condition Handling Whenever Statement: Scope and Flow of Control Explicit Error Checking Handling Errors: Getting Error Messages from the Database Indicator Variables 5.3 Some Common Embedded SQL Statements The Select Statement The Declare Cursor Statement The Delete Statement The Update Statement The Insert Statement Cursor Open, Fetch, and Close Other Embedded SQL Operations 5.4 Programming for Transactions The Concept of a Transaction How Transactions Are Specified in Programs A Transaction Example The Transaction Isolation Guarantee and Locking Special Considerations in Transactions 5.5 The Power of Procedural SQL Programs C-'stomized Set Functions 5.6 Dynamic SQL Execute Immediate Prepare, Execute, and Using Dynamic Select; The Describe Statement and the SQLDA 5.7 Some Advanced Programming Concepts Scrollable Cursors Cursor Sensitivity Other Development Environments for Database Programming Database Design 6.1 Introduction to E-R Concepts Entities. Attributes, and Simple E-R Diagrams Transforming Entities and Attributes to Relations Relationships among Entities 6.2 Further Details of E-R Modeling Cardinality of Entity Participation in a Relationship One-to-One, Many-to-Many, and Many-to-One Relationships Transforming Binary Relationships to Relations 6.3 Additional E-R Concepts Cardinality of Attributes Weak Entities Generalization Hierarchies 6.4 Case Study 6.5 Normalization: Preliminaries A Running Example: Employee Information Anomalies of a Bad Database Design 6.6 Functional Dependencies Logical Implications among Functional Dependencies Armstrong's Axioms Closure. Cover, and Minimal Cover 6.7 Lossless Decompositions 6.8 Normal Forms A Succession of Decompositions to Eliminate Anomalies Normal Forms: BCNF. 3NF. and 2NF An Algorithm to Achieve Well-Behaved 3NF Decomposition A Review of Normalization 6.9 Additional Design Considerations Database Design Tools Integrity, Views. Security, and Catalogs 7.1 Integrity Constraints Integrity Constraints in the Create Table Statement Primary Keys. Foreign Keys, and Referential Integrity Foreign Key Constraints: Product Variations The Alter Table Statement Non-Procedural and Procedural Integrity Constraints: Triggers 7.2 Creating Views Updatable and Read-Only Views The Value of Views 7.3 Security: The Grant Statement in SQL Variations in Database Products 7.4 System Catalogs and Schemas Schemas Catalog Variations in Database Products The INFORMIX System Catalog Catalog Tables for Object-Relational Constructs: ORACLE and INFORMIX Indexing 8.1 The Concept of Indexing 8.2 Disk Storage Disk Access Is Excruciatingly Slow The DBA and Disk Resource Allocation in ORACLE Data Storage Pages and Row Pointers: ORACLE and DB2 UDB 8.3 The B-Tree Index Dynamic Changes in the B-Tree Properties of the B-Tree Index Node Layout and Free Space The Create Index Statement in ORACLE and DB2 UDB Duplicate Key Values in an Index The ORACLE Bitmap Index 8.4 Clustered and Non-Clustered Indexes Clustering Indexes in DB2 UDB ORACLE Special Indexing Features 8.5 A Hash Primary Index Tuning HASHKEYS and SIZE in a Hash Cluster No Incremental Changes in the Number of Slots Used Advantages and Disadvantages of a Hash Primary Index 8.6 Throwing Darts at Random Slots Unlimited Slot Occupancy: How Many Slots Are Occupied? Slot Occupancy of One: Number of Retries (Rehash Chain) When Do Hash Pages Fill Up Query Processing 9.1 Introductory Concepts Query Resource Utilization Gathering Statistics Retrieving the Query Plan 9.2 Tablespace Scans and I/O Assumptions about I/O 9.3 Simple Indexed Access in DB2 Equal Unique Match Index Access Index-Only Retrieval 9.4 Filter Factors and Statistics DB2 Statistics Filter Factors in DB2 9.5 Matching Index Scans, Composite Indexes Definition of a Matching Index Scan Predicate Screening and Screening Predicates Indexable Predicates and Performance 9.6 Multiple Index Access List Prefetch and the RID Pool Point of Diminishing Returns in Multiple Index Access 9.7 Methods for Joining Tables Nested-Loop Join Merge Join Hybrid Join Multiple Table Joins Transforming Nested Queries to Joins 9.8 Disk Sorts 9.9 9.10 The N-Way Merge Disk Sort Algonthm Query Performance Benchmarks; A Case Study The BENCH Table Load Measurements Query Performance Measurements Query Ql Query Q2A Query Q2B Query Q3A Query Q3B Queries Q4A and Q4B Query Q5 Query Q6A Query Q6B 9.11 Cost-Performance Assessment Elapsed Time versus CPU Time Rating Customizing the Rating Variations in Indexing Use between DB2 and ORACLE Update Transactions 10.1 Transactional Histories Fundamental Atomic Read and Write Actions in the Database Predicate Read Actions Transactional Histories with Reads and Writes Interleaved Read-Write Operations Serializability and the Precedence Graph The Precedence Graph Locking to Ensure Serializability The Waits-For Graph 10.5 Levels of Isolation The Read Uncommitted Isolation Level The Read Committed Isolation Level and Cursor Stability Repeatable Read Isolation Level Serializability and Phantom Updates 10.6 Transactional Recovery 10.7 Recovery in Detail: Log Formats Guarantees That Needed Log Entries Are on Disk 10.8 Checkpoints The Commit-Consistent Checkpoint Motivation for Other Kinds of Checkpoints The Cache-Consistent Checkpoint The Fuzzy Checkpoint 10.9 Media Recovery Stable Storage 10.10 Performance: The TPC-A Benchmark The TPC-A Benchmark Specification Lessons from the TPC-A Benchmark Parallel and Distributed Databases 11.1 Some Multi-CPU Architectures Client-Server Architectures 11.2 The Curve of CPU Cost versus Power 11.3 Shared-Nothing Database Architecture Two-Phase Commit Further Problems with Shared-Nothing Architecture 11.4 Query Parallelism Intra-Query Parallelism Appendix A Introductory Tutorial A.1 Setting Up the CAP Database in ORACLE Creating the CAP Database Using the SQL* Loader Using SQL*Plus A.2 Setting Up the CAP Database in INFORMIX Creating the CAP Database (in UNIX) Using DB-Access (UNIX Systems) A.3 Datatypes Appendix B Programming Details B.I The prompt() Function Use of Numeric Constants in Code Examples B.2 The print_dberror() Function B.3 Building Embedded C Programs Precompilation and Compilation Procedure Using ORACLE/UNIX Precompilation and Compilation Procedure Using DB2 UDBAJNIX Appendix C SQL Statement Syntax C.I Alter Table Statement C.2 Close Cursor Statement C.3 Commit Work Statement 0.4 Connect Statement C.5 Create Function Statement (UDF) C.6 Create Index Statement C.7 Create Row Type Statement (0-R) C.8 Create Schema Statement C.9 Create Table Statement C.10 Create Tablespace Statement in ORACLE and DB2 UDB C.11 Create Trigger Statement 0.12 Create Type Statement (O-R) C.I 3 Create View Statement C.14 Declare Cursor Statement C.I 5 Delete Statement C.I 6 Describe Statement C.17 Disconnect Statement C.18 Drop Function Statement C.19 Drop Index Statement C.20 Drop Trigger Statement C.21 Drop (Row) Type Statement (O-R) C.22 Drop {Schema | Table | View} Statement C.23 Execute Statement C.24 Execute Immediate Statement C.25 Fetch Statement C.26 Grant Statement C.27 Insert Statement C.28 Open Cursor Statement C.29 Prepare Statement C.30 Revoke Statement C.31 Rollback Statement C.32 Select Statement C.33 Update Statement Appendix D Set Query Counts Solutions to Selected Exercises ER -