| Preface |
|
xvii | |
|
|
|
1 | (28) |
|
Overview of Databases and Transactions |
|
|
3 | (10) |
|
What Are Databases and Transactions? |
|
|
3 | (3) |
|
Features of Modern Database and Transaction Processing Systems |
|
|
6 | (1) |
|
Major Players in the Implementation and Support of Database and Transaction Processing Systems |
|
|
7 | (2) |
|
Decision Support Systems---OLAP and OLTP |
|
|
9 | (4) |
|
|
|
13 | (16) |
|
Case Study: A Student Registration System |
|
|
13 | (1) |
|
Introduction to Relational Databases |
|
|
14 | (6) |
|
What Makes a Program a Transaction---The ACID Properties |
|
|
20 | (9) |
|
|
|
25 | (1) |
|
|
|
25 | (4) |
|
PART TWO Database Management |
|
|
29 | (290) |
|
The Relational Data Model |
|
|
31 | (38) |
|
|
|
31 | (4) |
|
|
|
35 | (11) |
|
|
|
35 | (3) |
|
|
|
38 | (8) |
|
SQL---Data Definition Sublanguage |
|
|
46 | (23) |
|
Specifying the Relation Type |
|
|
46 | (1) |
|
|
|
46 | (1) |
|
|
|
47 | (1) |
|
Dealing with Missing Information |
|
|
48 | (1) |
|
|
|
49 | (4) |
|
|
|
53 | (1) |
|
|
|
53 | (3) |
|
|
|
56 | (3) |
|
|
|
59 | (1) |
|
Modifying Existing Definitions |
|
|
60 | (2) |
|
|
|
62 | (1) |
|
|
|
63 | (2) |
|
|
|
65 | (1) |
|
|
|
66 | (3) |
|
Conceptual Modeling of Databases with Entry-Relationship Diagrams and the Unified Modeling Language |
|
|
69 | (58) |
|
Conceptual Modeling with the E-R Approach |
|
|
70 | (1) |
|
Entities and Entity Types |
|
|
70 | (3) |
|
Relationships and Relationship Types |
|
|
73 | (5) |
|
Advanced Features in Conceptual Data Modeling |
|
|
78 | (8) |
|
|
|
78 | (3) |
|
Participation Constraints |
|
|
81 | (2) |
|
|
|
83 | (3) |
|
From E-R Diagrams to Relational Database Schemas |
|
|
86 | (9) |
|
Representation of Entities |
|
|
86 | (2) |
|
Representation of Relationships |
|
|
88 | (2) |
|
Representing IsA Hierarchies in the Relational Model |
|
|
90 | (2) |
|
Representation of Participation Constraints |
|
|
92 | (2) |
|
Representation of the Part-of Relationship |
|
|
94 | (1) |
|
UML: A New Kid on the Block |
|
|
95 | (11) |
|
Representing Entities in UML |
|
|
96 | (1) |
|
Representing Relationships in UML |
|
|
97 | (4) |
|
Advanced Modeling Concepts in UML |
|
|
101 | (4) |
|
|
|
105 | (1) |
|
|
|
106 | (5) |
|
An Entity-Relationship Design |
|
|
106 | (4) |
|
|
|
110 | (1) |
|
Case Study: A Database Design for the Student Registration System |
|
|
111 | (8) |
|
The Database Part of the Requirements Document |
|
|
112 | (1) |
|
|
|
113 | (6) |
|
Limitations of Data Modeling Methodologies |
|
|
119 | (8) |
|
|
|
123 | (1) |
|
|
|
123 | (4) |
|
Relational Algebra and SQL |
|
|
127 | (66) |
|
Relational Algebra: Under the Hood of SQL |
|
|
128 | (19) |
|
|
|
128 | (9) |
|
|
|
137 | (10) |
|
The Query Sublanguage of SQL |
|
|
147 | (35) |
|
|
|
148 | (6) |
|
|
|
154 | (3) |
|
|
|
157 | (6) |
|
|
|
163 | (1) |
|
|
|
164 | (6) |
|
Join Expressions in the FROM Clause |
|
|
170 | (1) |
|
A Simple Query Evaluation Algorithm |
|
|
171 | (3) |
|
|
|
174 | (3) |
|
|
|
177 | (4) |
|
|
|
181 | (1) |
|
Modifying Relation Instances in SQL |
|
|
182 | (11) |
|
|
|
182 | (2) |
|
|
|
184 | (1) |
|
|
|
185 | (1) |
|
|
|
185 | (2) |
|
|
|
187 | (1) |
|
|
|
188 | (5) |
|
Database Design with the Relational Normalization Theory |
|
|
193 | (58) |
|
The Problem of Redundancy |
|
|
193 | (2) |
|
|
|
195 | (3) |
|
|
|
198 | (2) |
|
Properties of Functional Dependencies |
|
|
200 | (7) |
|
|
|
207 | (4) |
|
The Boyce-Codd Normal Form |
|
|
208 | (2) |
|
|
|
210 | (1) |
|
Properties of Decompositions |
|
|
211 | (8) |
|
Lossless and Lossy Decompositions |
|
|
212 | (3) |
|
Dependency-Preserving Decompositions |
|
|
215 | (4) |
|
An Algorithm for BCNF Decomposition |
|
|
219 | (2) |
|
|
|
221 | (7) |
|
|
|
222 | (2) |
|
3NF Decomposition through Schema Synthesis |
|
|
224 | (2) |
|
BCNF Decomposition through 3NF Synthesis |
|
|
226 | (2) |
|
|
|
228 | (5) |
|
|
|
233 | (7) |
|
MVDs and Their Properties |
|
|
234 | (1) |
|
The Difficulty of Designing for 4NF |
|
|
235 | (3) |
|
A 4NF Decomposition How-To |
|
|
238 | (2) |
|
Summary of Normal Form Decomposition |
|
|
240 | (1) |
|
Case Study: Schema Refinement for the Student Registration System |
|
|
241 | (3) |
|
Tuning Issues: To Decompose or Not to Decompose? |
|
|
244 | (7) |
|
|
|
245 | (1) |
|
|
|
246 | (5) |
|
Triggers and Active Databases |
|
|
251 | (16) |
|
|
|
251 | (1) |
|
Semantic Issues in Trigger Handling |
|
|
252 | (4) |
|
|
|
256 | (8) |
|
Avoiding a Chain Reaction |
|
|
264 | (3) |
|
|
|
265 | (1) |
|
|
|
265 | (2) |
|
Using SQL in an Application |
|
|
267 | (52) |
|
What Are the Issues Involved? |
|
|
267 | (1) |
|
|
|
268 | (17) |
|
|
|
271 | (2) |
|
Sessions, Connections, and Transactions |
|
|
273 | (1) |
|
|
|
274 | (2) |
|
|
|
276 | (6) |
|
Stored Procedures on the Server |
|
|
282 | (3) |
|
More on Integrity Constraints |
|
|
285 | (1) |
|
|
|
286 | (8) |
|
Statement Preparation in Dynamic SQL |
|
|
287 | (3) |
|
Prepared Statements and the Descriptor Area |
|
|
290 | (3) |
|
|
|
293 | (1) |
|
Stored Procedures on the Server |
|
|
293 | (1) |
|
|
|
294 | (13) |
|
|
|
294 | (3) |
|
|
|
297 | (1) |
|
|
|
297 | (3) |
|
Obtaining Information about a Result Set |
|
|
300 | (1) |
|
|
|
300 | (1) |
|
|
|
301 | (1) |
|
Stored Procedures on the Server |
|
|
302 | (1) |
|
|
|
303 | (1) |
|
SQLJ: Statement-Level Interface to Java |
|
|
303 | (4) |
|
|
|
307 | (8) |
|
|
|
309 | (1) |
|
|
|
309 | (3) |
|
|
|
312 | (1) |
|
|
|
312 | (1) |
|
Stored Procedures on the Server |
|
|
313 | (1) |
|
|
|
313 | (2) |
|
|
|
315 | (4) |
|
|
|
316 | (1) |
|
|
|
316 | (3) |
|
PART THREE Optimizing DBMS Performance and Transaction Processing |
|
|
319 | (168) |
|
Physical Data Organization and Indexing |
|
|
321 | (58) |
|
|
|
322 | (7) |
|
|
|
326 | (3) |
|
|
|
329 | (4) |
|
|
|
333 | (4) |
|
|
|
337 | (10) |
|
Clustered versus Unclustered Indices |
|
|
340 | (2) |
|
Sparse versus Dense Indices |
|
|
342 | (2) |
|
Search Keys Containing Multiple Attributes |
|
|
344 | (3) |
|
|
|
347 | (13) |
|
|
|
350 | (3) |
|
|
|
353 | (7) |
|
|
|
360 | (11) |
|
|
|
360 | (3) |
|
Dynamic Hashing Algorithms |
|
|
363 | (8) |
|
|
|
371 | (2) |
|
|
|
371 | (1) |
|
|
|
372 | (1) |
|
Tuning Issues: Choosing Indices for an Application |
|
|
373 | (6) |
|
|
|
374 | (1) |
|
|
|
375 | (4) |
|
The Basics of Query Processing |
|
|
379 | (26) |
|
Overview of Query Processing |
|
|
379 | (1) |
|
|
|
380 | (4) |
|
Computing Projection, Union, and Set Difference |
|
|
384 | (2) |
|
|
|
386 | (6) |
|
Selections with Simple Conditions |
|
|
387 | (2) |
|
|
|
389 | (2) |
|
Selections with Complex Conditions |
|
|
391 | (1) |
|
|
|
392 | (7) |
|
Computing Joins Using Simple Nested Loops |
|
|
393 | (3) |
|
|
|
396 | (2) |
|
|
|
398 | (1) |
|
|
|
399 | (2) |
|
Computing Aggregate Functions |
|
|
401 | (4) |
|
|
|
401 | (1) |
|
|
|
401 | (4) |
|
An Overview of Query Optimization |
|
|
405 | (24) |
|
Query Processing Architecture |
|
|
405 | (2) |
|
Heuristic Optimization Based on Algebraic Equivalences |
|
|
407 | (3) |
|
Estimating the Cost of a Query Execution Plan |
|
|
410 | (8) |
|
Estimating the Size of the Output |
|
|
418 | (2) |
|
|
|
420 | (9) |
|
|
|
425 | (1) |
|
|
|
425 | (4) |
|
|
|
429 | (26) |
|
|
|
430 | (3) |
|
|
|
431 | (2) |
|
|
|
433 | (10) |
|
|
|
433 | (7) |
|
|
|
440 | (1) |
|
|
|
441 | (1) |
|
|
|
442 | (1) |
|
Tuning the Data Manipulation Language |
|
|
443 | (3) |
|
|
|
446 | (1) |
|
Managing Physical Resources |
|
|
447 | (1) |
|
Influencing the Optimizer |
|
|
448 | (7) |
|
|
|
451 | (1) |
|
|
|
451 | (4) |
|
An Overview of Transaction Processing |
|
|
455 | (32) |
|
|
|
455 | (17) |
|
|
|
456 | (2) |
|
|
|
458 | (4) |
|
|
|
462 | (1) |
|
Locking in Relational Databases |
|
|
463 | (2) |
|
|
|
465 | (3) |
|
Lock Granularity and Intention Locks |
|
|
468 | (3) |
|
|
|
471 | (1) |
|
|
|
472 | (5) |
|
|
|
472 | (4) |
|
Recovery from Mass Storage Failure |
|
|
476 | (1) |
|
Implementing Distributed Transactions |
|
|
477 | (10) |
|
Atomicity and Durability---The Two-Phase Commit Protocol |
|
|
478 | (2) |
|
Global Serializability and Deadlock |
|
|
480 | (2) |
|
|
|
482 | (2) |
|
|
|
484 | (1) |
|
|
|
484 | (1) |
|
|
|
485 | (2) |
|
PART FOUR Software Engineering Issues and Documentation |
|
|
487 | (48) |
|
Requirements and Specifications |
|
|
489 | (20) |
|
Software Engineering Methodology |
|
|
489 | (4) |
|
|
|
490 | (3) |
|
The Requirements Document for the Student Registration System |
|
|
493 | (7) |
|
Requirements Analysis---New Issues |
|
|
500 | (2) |
|
Specifying the Student Registration System |
|
|
502 | (2) |
|
|
|
503 | (1) |
|
The Specification Document for the Student Registration System: Section III |
|
|
504 | (2) |
|
The Next Step in the Software Engineering Process |
|
|
506 | (3) |
|
|
|
506 | (1) |
|
|
|
507 | (2) |
|
Design, Coding, and Testing |
|
|
509 | (26) |
|
|
|
509 | (6) |
|
|
|
510 | (1) |
|
Describing the Behavior of Objects with UML State Diagrams |
|
|
510 | (2) |
|
Structure of the Design Document |
|
|
512 | (2) |
|
|
|
514 | (1) |
|
|
|
515 | (3) |
|
|
|
518 | (3) |
|
|
|
521 | (2) |
|
|
|
523 | (1) |
|
The Project Management Plan |
|
|
524 | (1) |
|
Design and Code for the Student Registration System |
|
|
525 | (10) |
|
Completing the Database Design: Integrity Constraints |
|
|
526 | (2) |
|
Design of the Registration Transaction |
|
|
528 | (2) |
|
Partial Code for the Registration Transaction |
|
|
530 | (3) |
|
|
|
533 | (1) |
|
|
|
533 | (2) |
|
PART FIVE Advanced Topics in Databases |
|
|
535 | (104) |
|
Introduction to Object Databases |
|
|
537 | (30) |
|
Shortcomings of the Relational Data Model |
|
|
537 | (6) |
|
The Conceptual Object Data Model |
|
|
543 | (7) |
|
|
|
544 | (1) |
|
|
|
545 | (1) |
|
|
|
546 | (3) |
|
Object-Relational Databases |
|
|
549 | (1) |
|
Objects in SQL: 1999 and SQL:2003 |
|
|
550 | (17) |
|
|
|
551 | (1) |
|
|
|
552 | (1) |
|
|
|
553 | (1) |
|
Querying User-Defined Types |
|
|
554 | (1) |
|
Updating User-Defined Types |
|
|
555 | (3) |
|
|
|
558 | (2) |
|
|
|
560 | (1) |
|
|
|
561 | (2) |
|
|
|
563 | (1) |
|
|
|
564 | (3) |
|
Introduction to XML and Web Data |
|
|
567 | (72) |
|
|
|
567 | (3) |
|
|
|
570 | (16) |
|
XML Elements and Database Objects |
|
|
573 | (2) |
|
|
|
575 | (2) |
|
|
|
577 | (5) |
|
Document Type Definitions |
|
|
582 | (3) |
|
Inadequacy of DTDs as a Data Definition Language |
|
|
585 | (1) |
|
|
|
586 | (29) |
|
XML Schema and Namespaces |
|
|
587 | (3) |
|
|
|
590 | (5) |
|
|
|
595 | (8) |
|
|
|
603 | (3) |
|
Shortcuts: Anonymous Types and Element References |
|
|
606 | (2) |
|
|
|
608 | (7) |
|
|
|
615 | (24) |
|
XPath: A Lightweight XML Query Language |
|
|
616 | (7) |
|
|
|
623 | (10) |
|
|
|
633 | (1) |
|
|
|
634 | (5) |
| Bibliography |
|
639 | (10) |
| Index |
|
649 | |