| Preface | | xiii | |
| PART I PRELIMINARIES | |
| | | 3 | (11) |
| What is The Third Manifesto? | | | 3 | (1) |
| | | 4 | (1) |
| Back to the relational future | | | 5 | (2) |
| | | 7 | (1) |
| Some crucial logical differences | | | 8 | (3) |
| Topics deliberately omitted | | | 11 | (1) |
| The Third Manifesto: A summary | | | 12 | (2) |
| | | 14 | (19) |
| | | 14 | (1) |
| What problem are we trying to solve? | | | 15 | (1) |
| | | 16 | (3) |
| Domains vs. object classes | | | 19 | (3) |
| Relvars vs. object classes | | | 22 | (7) |
| | | 29 | (1) |
| | | 29 | (4) |
| PART II FORMAL SPECIFICATIONS | |
| | | 33 | (11) |
| | | 33 | (7) |
| | | 40 | (1) |
| | | 40 | (1) |
| | | 41 | (1) |
| RM Very Strong Suggestions | | | 42 | (1) |
| OO Very Strong Suggestions | | | 43 | (1) |
| | | 44 | (15) |
| | | 44 | (1) |
| Motivation and justification | | | 45 | (4) |
| REMOVE, RENAME, and COMPOSE | | | 49 | (2) |
| Treating operators as relations | | | 51 | (3) |
| | | 54 | (2) |
| | | 56 | (3) |
| | | 59 | (42) |
| | | 59 | (3) |
| | | 62 | (1) |
| | | 63 | (4) |
| | | 67 | (1) |
| | | 67 | (2) |
| | | 69 | (2) |
| | | 71 | (3) |
| | | 74 | (6) |
| | | 80 | (2) |
| | | 82 | (2) |
| | | 84 | (8) |
| Mapping the relational operations | | | 92 | (9) |
| PART III INFORMAL DISCUSSIONS AND EXPLANATIONS | |
| | | 101 | (82) |
| | | 101 | (6) |
| | | 107 | (1) |
| | | 107 | (8) |
| Actual vs. possible representations | | | 115 | (8) |
| Expose possible representations | | | 123 | (7) |
| | | 130 | (5) |
| | | 135 | (4) |
| | | 139 | (3) |
| | | 142 | (1) |
| | | 143 | (3) |
| | | 146 | (1) |
| | | 147 | (1) |
| Relation variables (relvars) | | | 148 | (2) |
| | | 150 | (2) |
| | | 152 | (2) |
| | | 154 | (1) |
| | | 155 | (1) |
| | | 156 | (6) |
| Relvar names, relation selectors, and recursion | | | 162 | (1) |
| Relation-valued operators | | | 163 | (2) |
| | | 165 | (4) |
| | | 169 | (2) |
| | | 171 | (8) |
| Relvar and database predicates | | | 179 | (2) |
| | | 181 | (1) |
| | | 181 | (2) |
| | | 183 | (8) |
| | | 183 | (2) |
| | | 185 | (1) |
| | | 185 | (1) |
| | | 185 | (1) |
| | | 186 | (1) |
| No internal-level constructs | | | 187 | (1) |
| No tuple-level operations | | | 188 | (1) |
| | | 189 | (1) |
| | | 189 | (1) |
| | | 190 | (1) |
| | | 191 | (7) |
| Compile-time type checking | | | 191 | (1) |
| Type inheritance (conditional) | | | 192 | (1) |
| Computational completeness | | | 193 | (1) |
| Explicit transaction boundaries | | | 194 | (1) |
| | | 195 | (1) |
| Aggregate operators and empty sets | | | 196 | (2) |
| | | 198 | (4) |
| | | 198 | (1) |
| | | 198 | (4) |
| RM Very Strong Suggestions | | | 202 | (32) |
| | | 202 | (4) |
| | | 206 | (1) |
| | | 207 | (2) |
| | | 209 | (1) |
| | | 210 | (3) |
| Generalized transitive closure | | | 213 | (4) |
| User-defined generic operators | | | 217 | (1) |
| Special ("default") values | | | 218 | (2) |
| | | 220 | (14) |
| OO Very Strong Suggestion | | | 234 | (9) |
| | | 234 | (2) |
| Types and operators unbundled | | | 236 | (1) |
| Collection type generators | | | 237 | (1) |
| Conversion to/from relations | | | 238 | (1) |
| | | 239 | (4) |
| PART IV SUBTYPING AND INHERITANCE | |
| | | 243 | (7) |
| | | 243 | (2) |
| Toward a type inheritance model | | | 245 | (1) |
| Single vs. multiple inheritance | | | 246 | (1) |
| Scalars, tuples, and relations | | | 247 | (1) |
| | | 248 | (2) |
| | | 250 | (7) |
| | | 250 | (1) |
| | | 250 | (7) |
| Single Inheritance with Scalar Types | | | 257 | (60) |
| | | 257 | (7) |
| | | 264 | (1) |
| | | 265 | (2) |
| "Subtype of" is reflexive | | | 267 | (1) |
| | | 268 | (1) |
| "Subtype of" is transitive | | | 268 | (1) |
| | | 269 | (2) |
| Types disjoint unless one a subtype of the other | | | 271 | (1) |
| Scalar values with inheritance | | | 271 | (1) |
| Scalar variables with inheritance | | | 272 | (6) |
| Specialization by constraint | | | 278 | (3) |
| Assignment with inheritance | | | 281 | (3) |
| Equality etc. with inheritance | | | 284 | (3) |
| Join etc. with inheritance | | | 287 | (1) |
| | | 288 | (4) |
| | | 292 | (2) |
| Read-only operator inheritance and value substitutability | | | 294 | (5) |
| | | 299 | (6) |
| Read-only parameters to update operators | | | 305 | (1) |
| Update operator inheritance and variable substitutability | | | 306 | (4) |
| Union, dummy, and maximal and minimal types | | | 310 | (7) |
| Multiple Inheritance with Scalar Types | | | 317 | (19) |
| | | 317 | (1) |
| | | 318 | (4) |
| IM Prescriptions 1-20 revisited | | | 322 | (2) |
| Least specific types unique | | | 324 | (2) |
| Most specific types unique | | | 326 | (7) |
| Type testing with multiple inheritance | | | 333 | (1) |
| Remarks on operator inheritance | | | 334 | (2) |
| Inheritance with Tuple and Relation Types | | | 336 | (197) |
| | | 336 | (1) |
| Tuple/relation subtypes and supertypes | | | 337 | (4) |
| Tuple/relation values with inheritance | | | 341 | (3) |
| Maximal and minimal tuple/relation types | | | 344 | (2) |
| Tuple/relation most specific types | | | 346 | (6) |
| Tuple/relation variables with inheritance | | | 352 | (2) |
| Specialization by constraint | | | 354 | (1) |
| Tuple/relation assignment with inheritance | | | 355 | (1) |
| Tuple/relation equality etc. with inheritance | | | 356 | (1) |
| Tuple/relation TREAT DOWN | | | 356 | (2) |
| Tuple/relation type testing | | | 358 | (1) |
| The additional prescriptions summarized | | | 359 | (4) |
| APPENDIXES | |
| Appendix A A Relational Calculus Version of Tutorial D | | | 363 | (8) |
| | | 363 | (2) |
| | | 365 | (1) |
| Builtin relation operator invocations | | | 365 | (1) |
| Free and bound range variable references | | | 366 | (1) |
| Relation UPDATE and DELETE operators | | | 367 | (1) |
| | | 367 | (4) |
| Appendix B The Two Great Blunders | | | 371 | (7) |
| | | 371 | (1) |
| | | 371 | (4) |
| | | 375 | (3) |
| Appendix C A Design Dilemma? | | | 378 | (6) |
| | | 378 | (1) |
| | | 378 | (1) |
| | | 379 | (2) |
| | | 381 | (3) |
| Appendix D Types and Units | | | 384 | (8) |
| | | 384 | (1) |
| | | 384 | (1) |
| | | 385 | (1) |
| | | 386 | (1) |
| | | 387 | (2) |
| | | 389 | (1) |
| | | 390 | (1) |
| | | 390 | (2) |
| Appendix E Subtables and Supertables | | | 392 | (6) |
| | | 392 | (2) |
| Some general observations | | | 394 | (1) |
| The terminology is extremely bad | | | 395 | (1) |
| The concept is not type inheritance | | | 396 | (1) |
| | | 397 | (1) |
| Appendix F More on Changing Semantics and Related Matters | | | 398 | (7) |
| | | 398 | (1) |
| | | 399 | (1) |
| | | 399 | (3) |
| | | 402 | (3) |
| Appendix G Specialization by Constraint and Related Matters | | | 405 | (18) |
| | | 405 | (1) |
| | | 405 | (6) |
| What does inheritance really mean? | | | 411 | (1) |
| | | 412 | (4) |
| Is a colored circle a circle? | | | 416 | (1) |
| Object IDs undermine inheritance | | | 417 | (4) |
| Why the problem does not arise with foreign keys | | | 421 | (2) |
| Appendix H A Comparison with SQL | | | 423 | (25) |
| | | 423 | (2) |
| | | 425 | (11) |
| | | 436 | (1) |
| | | 437 | (1) |
| | | 438 | (1) |
| RM Very Strong Suggestions | | | 438 | (1) |
| OO Very Strong Suggestions | | | 439 | (1) |
| | | 440 | (4) |
| History of the wrong equation in SQL | | | 444 | (4) |
| Appendix I A Comparison with ODMG | | | 448 | (24) |
| | | 448 | (3) |
| | | 451 | (11) |
| | | 462 | (4) |
| | | 466 | (1) |
| | | 467 | (1) |
| | | 467 | (1) |
| RM Very Strong Suggestions | | | 468 | (1) |
| OO Very Strong Suggestions | | | 469 | (1) |
| | | 469 | (3) |
| Appendix J The Next 25 Years of the Relational Model? | | | 472 | (19) |
| | | 472 | (1) |
| | | 473 | (1) |
| | | 474 | (5) |
| The Third Manifesto and SQL | | | 479 | (1) |
| | | 479 | (6) |
| | | 485 | (2) |
| | | 487 | (4) |
| Appendix K References and Bibliography | | | 491 | (42) |
| Index | | 533 | |