| Foreword | | xiii | |
| Preface | | xv | |
| Introduction to Object-Relational Database Development | | | 1 | (46) |
| | | 1 | (1) |
| Evolution of Database Management Systems | | | 2 | (10) |
| ORDBMS Concepts and Terminology | | | 12 | (15) |
| | | 27 | (7) |
| | | 34 | (8) |
| | | 42 | (2) |
| | | 44 | (1) |
| | | 45 | (2) |
| Facts, Tables, and Schema: The Object-Relational Data Model | | | 47 | (64) |
| Introduction: Data Models | | | 47 | (2) |
| The Object-Relational Data Model | | | 49 | (10) |
| | | 59 | (5) |
| Object-Relational Structured Query Language (OR-SQL) | | | 64 | (2) |
| Object-Relational Schema Definition | | | 66 | (1) |
| | | 66 | (6) |
| | | 72 | (9) |
| Referential Integrity Constraints | | | 81 | (4) |
| | | 85 | (3) |
| Non-Traditional Table Storage | | | 88 | (1) |
| | | 89 | (5) |
| | | 94 | (4) |
| | | 98 | (7) |
| Database Security and Access Privileges | | | 105 | (3) |
| | | 108 | (3) |
| Tutorial 1: Physical Data Organization | | 111 | (80) |
| Table Data: Pages, Heaps and Table Spaces | | | 111 | (3) |
| | | 114 | (1) |
| | | 115 | (1) |
| Indices: B-Trees and R-Trees | | | 115 | (4) |
| Tools, Utilities, and Techniques | | | 119 | (4) |
| Object-Relational Queries | | | 123 | (68) |
| Manipulating Object-Relational Data | | | 123 | (2) |
| Relational Manipulation Operations | | | 125 | (15) |
| | | 140 | (17) |
| Object-Relational Structural Features and SELECT Queries | | | 157 | (12) |
| Changing Data Using OR-SQL | | | 169 | (6) |
| | | 175 | (4) |
| | | 179 | (2) |
| General Note on Correlated Queries | | | 181 | (1) |
| | | 182 | (7) |
| | | 189 | (2) |
| Tutorial 2: The Transaction Concept and its Applications | | 191 | (80) |
| | | 191 | (8) |
| Implementing Transactions | | | 199 | (2) |
| | | 201 | (2) |
| Data Type and Function Extensibility | | | 203 | (68) |
| Introduction to ORDBMS Data Type Extensibility | | | 203 | (1) |
| Overview of Object-Oriented Software Development Concepts | | | 204 | (10) |
| | | 214 | (1) |
| | | 215 | (9) |
| | | 224 | (7) |
| CAST: Converting Between Data Types | | | 231 | (5) |
| | | 236 | (3) |
| | | 239 | (6) |
| | | 245 | (11) |
| | | 256 | (9) |
| Administration of User-Defined Types | | | 265 | (3) |
| | | 268 | (3) |
| Tutorial 3: A Tour of the Available DataBlade Products | | 271 | (84) |
| Categories of DataBlade Products | | | 272 | (16) |
| Other DataBlade Approaches | | | 288 | (1) |
| Object Behavior and User-Defined Functions | | | 289 | (66) |
| Introduction to Extending the ORDBMS with User-Defined Routines | | | 289 | (4) |
| User-Defined Routine Architecture | | | 293 | (6) |
| Creating User-Defined Functions | | | 299 | (28) |
| | | 327 | (7) |
| Using User-Defined Functions | | | 334 | (6) |
| Advanced User-Defined Functions | | | 340 | (10) |
| Administering User-Defined Functions | | | 350 | (2) |
| | | 352 | (3) |
| Tutorial 4: Using Java™ to Create UDTs and UDRs | | 355 | (310) |
| Overview of Java Technology | | | 356 | (1) |
| | | 357 | (1) |
| Step 1: Compiling Java Source | | | 358 | (1) |
| Step 2: Combine Class Files into a Java Archive (jar) File | | | 359 | (1) |
| Step 3: Load Archive into ORDBMS | | | 360 | (1) |
| Step 4: Define User-Defined Functions Using the Archive | | | 360 | (1) |
| Java User-Defined Routines | | | 361 | (2) |
| Java Environment Inside the ORDBMS | | | 363 | (3) |
| Embedding Java Classes into the ORDBMS | | | 366 | (2) |
| Design Alternatives for Java Class Storage | | | 368 | (6) |
| Using Java Classes Within the ORDBMS | | | 374 | (1) |
| The ORDBMS and Data Processing | | | 375 | (68) |
| Data Processing Within Information Systems | | | 375 | (6) |
| Database Stored Procedures | | | 381 | (3) |
| Creating Stored Procedures | | | 384 | (4) |
| Stored Procedure Language (SPL) | | | 388 | (13) |
| Administration and Management of Stored Procedures | | | 401 | (2) |
| | | 403 | (1) |
| | | 404 | (13) |
| | | 417 | (2) |
| Applications of Database Procedures and Triggers | | | 419 | (3) |
| Distributed Data Management | | | 422 | (2) |
| | | 424 | (9) |
| | | 433 | (5) |
| | | 438 | (2) |
| Architectural Implications | | | 440 | (2) |
| | | 442 | (1) |
| Client Interfaces to ORDBMSs | | | 443 | (82) |
| Client Programs and DBMSs | | | 443 | (3) |
| Information System Architectures | | | 446 | (5) |
| Embedding OR-SQL in C--ESQL/C | | | 451 | (11) |
| | | 462 | (16) |
| Error and Exception Handling | | | 478 | (3) |
| | | 481 | (1) |
| Embedded OR-SQL and Application Development | | | 482 | (1) |
| Java Database Connectivity (JDBC) | | | 483 | (7) |
| | | 490 | (11) |
| | | 501 | (10) |
| Java, JDBC and ORDBMS Development | | | 511 | (1) |
| | | 512 | (3) |
| | | 515 | (7) |
| | | 522 | (3) |
| Object-Relational Database Development | | | 525 | (72) |
| Introduction to Object-Relational Database Analysis and Design | | | 525 | (2) |
| Database Development Objectives | | | 527 | (4) |
| The ANSI Three-Tier Database Model | | | 531 | (5) |
| ORDBMS Development Methodology Steps | | | 536 | (2) |
| Part 1: Conceptual Modeling | | | 538 | (1) |
| Entity-Relationship Data Modeling | | | 539 | (1) |
| Describing the Entities in the Problem Domain | | | 540 | (9) |
| Describing Relationships Between Entities | | | 549 | (4) |
| | | 553 | (6) |
| | | 559 | (1) |
| Conceptual Object Modeling | | | 560 | (2) |
| Background to Object Analysis | | | 562 | (6) |
| Object Analysis with an ORDBMS | | | 568 | (4) |
| | | 572 | (9) |
| | | 581 | (3) |
| Minimize the Set of Object Classes | | | 584 | (2) |
| Conceptual Modeling for Type System Summary | | | 586 | (1) |
| Data Processing and Workload Analysis | | | 586 | (2) |
| Data Processing Operations | | | 588 | (5) |
| | | 593 | (1) |
| | | 594 | (3) |
| Object-Relational Database Design | | | 597 | (68) |
| Design and Implementation of Object-Relational Databases | | | 597 | (3) |
| Implementing the User-Defined Data Types | | | 600 | (17) |
| Implementing User-Defined Functions | | | 617 | (4) |
| Overview of Schema Design | | | 621 | (4) |
| | | 625 | (14) |
| | | 639 | (9) |
| Miscellaneous Design Decisions | | | 648 | (8) |
| | | 656 | (7) |
| | | 663 | (2) |
| Tutorial 5: Several Examples of Interesting Extensions | | 665 | (92) |
| Node Data Type for Hierarchical Management | | | 665 | (9) |
| Ranking User-Defined Aggregates | | | 674 | (3) |
| Dynamic OR-SQL in the Stored Procedure Language | | | 677 | (6) |
| Forging the Perfect DataBlade | | | 683 | (74) |
| | | 683 | (3) |
| How the ORDBMS Uses C UDFs | | | 686 | (8) |
| ORDBMS Programming Environment | | | 694 | (2) |
| SAPI and User-Defined Functions | | | 696 | (12) |
| | | 708 | (27) |
| MI_FPARAM Argument: Structure and Uses | | | 735 | (8) |
| Coding Guidelines for EXTERNAL UDFs | | | 743 | (7) |
| | | 750 | (3) |
| Top Six Rules for Writing External User-Defined Functions | | | 753 | (1) |
| | | 754 | (3) |
| Tutorial 6: Virtual Table Interface | | 757 | (26) |
| | | 757 | (1) |
| | | 758 | (1) |
| How the ORDBMS Uses VTI Interfaces | | | 759 | (2) |
| Implementing a New VTI Storage Manager | | | 761 | (2) |
| VTI User-Defined Functions | | | 763 | (2) |
| | | 765 | (10) |
| Creating VTI User-Defined Functions | | | 775 | (1) |
| Creating a New Access Method | | | 776 | (1) |
| Creating a Table Using the New Access Method | | | 777 | (1) |
| | | 778 | (3) |
| | | 781 | (1) |
| | | 781 | (1) |
| | | 782 | (1) |
| | | 782 | (1) |
| Glossary | | 783 | (8) |
| References | | 791 | (4) |
| Index | | 795 | (19) |
| About the CD | | 814 | |