Preface | | xvii | (2) |
Publishing History | | xix | |
PART I THEORY IS PRACTICAL! | | 4 | (273) |
Introduction | | 1 | (3) |
| INSTALLMENT NUMBER 26 Oh Oh Relational | | | 4 | (12) |
| INSTALLMENT NUMBER 27 Integrity Revisited | | | 16 | (8) |
| INSTALLMENT NUMBER 28 Relations and Their Interpretation | | | 24 | (6) |
| INSTALLMENT NUMBER 29 It's All Relations! | | | 30 | (6) |
| INSTALLMENT NUMBER 30 Answers to Puzzle Corner Problems (Installments 26-29) | | | 36 | (7) |
| INSTALLMENT NUMBER 31 Nested Relations (Part 1 of 2) | | | 43 | (7) |
| INSTALLMENT NUMBER 32 Nested Relations (Part 2 of 2) | | | 50 | (7) |
| INSTALLMENT NUMBER 33 We Don't Need Composite Columns | | | 57 | (8) |
| INSTALLMENT NUMBER 34 The Department of Redundancy Department | | | 65 | (7) |
| INSTALLMENT NUMBER 35 A Note on Orthogonality | | | 72 | (7) |
| INSTALLMENT NUMBER 36 Answers to Puzzle Corner Problems (Installments 31-35) | | | 79 | (9) |
| INSTALLMENT NUMBER 37 Domains Aren't Relations! | | | 88 | (9) |
| INSTALLMENT NUMBER 38 SQL Domains Aren't Domains! | | | 97 | (8) |
| INSTALLMENT NUMBER 39 Functional Dependencies Are Fun (Part 1 of 2) | | | 105 | (6) |
| INSTALLMENT NUMBER 40 Functional Dependencies Are Fun (Part 2 of 2) | | | 111 | (7) |
| INSTALLMENT NUMBER 41 The Saga of IEFBR14 | | | 118 | (5) |
| INSTALLMENT NUMBER 42 Round and Round the Nullberry Bush | | | 123 | (6) |
| INSTALLMENT NUMBER 43 Answers to Puzzle Corner Problems (Installments 37-42) | | | 129 | (9) |
| INSTALLMENT NUMBER 44 Aggregate Operators | | | 138 | (7) |
| INSTALLMENT NUMBER 45 SUMMARIZE Revisited | | | 145 | (6) |
| INSTALLMENT NUMBER 46 The Art of the Possible | | | 151 | (8) |
| INSTALLMENT NUMBER 47 Quota Queries (Part 1 of 3) | | | 159 | (6) |
| INSTALLMENT NUMBER 48 Quota Queries (Part 2 of 3) | | | 165 | (7) |
| INSTALLMENT NUMBER 49 Quota Queries (Part 3 of 3) | | | 172 | (7) |
| INSTALLMENT NUMBER 50 Answers to Puzzle Corner Problems (Installments 44-49) | | | 179 | (7) |
| INSTALLMENT NUMBER 51 Faults and Defaults (Part 1 of 5) | | | 186 | (7) |
| INSTALLMENT NUMBER 52 Faults and Defaults (Part 2 of 5) | | | 193 | (9) |
| INSTALLMENT NUMBER 53 Faults and Defaults (Part 3 of 5) | | | 202 | (10) |
| INSTALLMENT NUMBER 54 Faults and Defaults (Part 4 of 5) | | | 212 | (10) |
| INSTALLMENT NUMBER 55 Database Graffiti | | | 222 | (7) |
| INSTALLMENT NUMBER 56 Faults and Defaults (Part 5 of 5) | | | 229 | (8) |
| INSTALLMENT NUMBER 57 Answers to Puzzle Corner Problems (Installments 51-56) | | | 237 | (6) |
| INSTALLMENT NUMBER 58 Why Is It Important to Think Precisely? (Part 1 of 4) | | | 243 | (8) |
| INSTALLMENT NUMBER 59 Why Is It Important to Think Precisely? (Part 2 of 4) | | | 251 | (6) |
| INSTALLMENT NUMBER 60 Why Is It Important to Think Precisely? (Part 3 of 4) | | | 257 | (7) |
| INSTALLMENT NUMBER 61 Why Is It Important to Think Precisely? (Part 4 of 4) | | | 264 | (7) |
| INSTALLMENT NUMBER 62 Answers to Puzzle Corner Problems (Installments 55-61) | | | 271 | (6) |
PART II RELATIONAL DATABASE MANAGEMENT | | 277 | (52) |
Introduction | | 277 | (2) |
| CHAPTER 1 What a Database Really Is: Predicates and Propositions | | | 279 | (10) |
| | 279 | (1) |
| Comments on republication | | | 279 | (1) |
| | 280 | (1) |
| | 281 | (1) |
| | 281 | (1) |
| A database is a set of true propositions | | | 282 | (1) |
| | 282 | (4) |
| | 286 | (1) |
| | 286 | (1) |
| | 287 | (2) |
| CHAPTER 2 The Relational Model Turns 25 | | | 289 | (16) |
| | 289 | (1) |
| Comments on republication | | | 289 | (1) |
| | 290 | (1) |
| | 291 | (2) |
| We've come a long way, maybe | | | 293 | (2) |
| The relational model, vintage 1969-70 | | | 295 | (3) |
| | 298 | (1) |
| | 299 | (1) |
| The twelve rules and beyond | | | 299 | (1) |
| | 300 | (1) |
| | 300 | (3) |
| | 303 | (2) |
| CHAPTER 3 The Third Manifesto: Foundation for Object/Relational Databases | | | 305 | (16) |
| | 305 | (1) |
| Comments on republication | | | 305 | (1) |
| | 306 | (1) |
| What problem are we trying to solve? | | | 307 | (1) |
| | 308 | (1) |
| | 308 | (3) |
| Domains vs. object classes | | | 311 | (2) |
| Relvars vs. object classes | | | 313 | (6) |
| | 319 | (1) |
| | 319 | (1) |
| | 319 | (1) |
| | 320 | (1) |
| CHAPTER 4 Some Remarks on Types, Units, and Type Design | | | 321 | (8) |
| | 321 | (1) |
| | 321 | (1) |
| | 322 | (1) |
| Confusion in the industry | | | 322 | (1) |
| | 323 | (1) |
| | 324 | (2) |
| | 326 | (1) |
| | 327 | (1) |
| | 327 | (1) |
| | 328 | (1) |
PART III THE PROBLEM OF MISSING INFORMATION | | 329 | (108) |
Introduction | | 329 | (2) |
| CHAPTER 5 Nothing from Nothing (Part 1 of 4): What's Logic Got to Do with It? | | | 331 | (16) |
| | 331 | (1) |
| Comments on republication | | | 332 | (1) |
| | 332 | (1) |
| | 333 | (2) |
| | 335 | (3) |
| | 338 | (2) |
| | 340 | (2) |
| | 342 | (2) |
| | 344 | (1) |
| | 345 | (1) |
| | 345 | (1) |
| | 346 | (1) |
| | 346 | (1) |
| CHAPTER 6 Nothing from Nothing (Part 2 of 4): Classical Logic: Nothing Compares 2 U | | | 347 | (20) |
| | 347 | (1) |
| Comments on republication | | | 347 | (1) |
| | 348 | (2) |
| | 350 | (1) |
| | 351 | (1) |
| | 352 | (1) |
| | 352 | (4) |
| | 356 | (4) |
| | 360 | (1) |
| "Relational" three-valued logic | | | 361 | (1) |
| | 362 | (1) |
| | 363 | (1) |
| | 363 | (4) |
| CHAPTER 7 Nothing from Nothing (Part 3 of 4): Can't Lose What You Never Had | | | 367 | (10) |
| | 367 | (1) |
| Comments on republication | | | 367 | (1) |
| | 368 | (1) |
| Conditional relationships | | | 369 | (1) |
| | 370 | (1) |
| | 371 | (1) |
| | 371 | (1) |
| Capturing nothing: conditional information | | | 372 | (2) |
| | 374 | (1) |
| | 375 | (1) |
| | 375 | (1) |
| | 375 | (2) |
| CHAPTER 8 Nothing from Nothing (Part 4 of 4): It's in the Way That You Use It | | | 377 | (18) |
| | 377 | (1) |
| Comments on republication | | | 377 | (1) |
| | 378 | (1) |
| | 379 | (3) |
| Conditional relationships | | | 382 | (2) |
| | 384 | (1) |
| | 385 | (1) |
| | 386 | (1) |
| | 387 | (2) |
| | 389 | (1) |
| | 390 | (1) |
| | 390 | (1) |
| | 391 | (1) |
| | 392 | (1) |
| | 393 | (1) |
| | 393 | (2) |
| CHAPTER 9 Nothing to Do with the Case | | | 395 | (16) |
| | 395 | (1) |
| Comments on republication | | | 395 | (1) |
| | 396 | (1) |
| | 397 | (1) |
| | 397 | (1) |
| | 398 | (2) |
| | 400 | (1) |
| | 401 | (1) |
| | 401 | (1) |
| | 402 | (2) |
| | 404 | (1) |
| | 404 | (1) |
| | 405 | (3) |
| | 408 | (3) |
| CHAPTER 10 Up to a Point, Lord Copper | | | 411 | (26) |
| | 411 | (1) |
| Comments on republication | | | 411 | (1) |
| | 412 | (1) |
| | 412 | (3) |
| An agreement with Date: scope and limits | | | 415 | (1) |
| Date's positions and Date's objections | | | 416 | (3) |
| | 419 | (1) |
| Does Dr. Codd understand what a relation is? | | | 420 | (2) |
| | 422 | (4) |
| | 426 | (3) |
| Nothing to do with the case? | | | 429 | (2) |
| | 431 | (2) |
| | 433 | (1) |
| | 433 | (4) |
PART IV RELATIONAL vs. NONRELATIONAL SYSTEMS | | 437 | (102) |
Introduction | | 437 | (2) |
| CHAPTER 11 Why "The Object Model" Is Not a Data Model | | | 439 | (18) |
| | 439 | (1) |
| Comments on republication | | | 439 | (1) |
| | 440 | (1) |
| Data models and storage models | | | 440 | (2) |
| An overview of "the object model" | | | 442 | (3) |
| | 445 | (2) |
| | 447 | (4) |
| | 451 | (1) |
| | 452 | (2) |
| | 454 | (1) |
| | 455 | (1) |
| | 455 | (2) |
| CHAPTER 12 Object Identifiers vs. Relational Keys | | | 457 | (20) |
| | 457 | (1) |
| | 457 | (1) |
| | 457 | (1) |
| | 458 | (2) |
| | 460 | (3) |
| | 463 | (1) |
| Identity vs. equality (?) | | | 464 | (1) |
| | 465 | (1) |
| Response by ODMG member X | | | 465 | (3) |
| Response by ODMG member Y | | | 468 | (5) |
| | 473 | (1) |
| | 474 | (1) |
| | 474 | (3) |
| CHAPTER 13 Objects and Relations: Forty-Seven Points of Light | | | 477 | (28) |
| | 477 | (1) |
| Comments on republication | | | 477 | (2) |
| | 479 | (1) |
| Some fundamental distinctions | | | 480 | (3) |
| | 483 | (1) |
| Why marry objects and relations? | | | 483 | (5) |
| The relation-centric perspective | | | 488 | (8) |
| The object-centric perspective | | | 496 | (6) |
| | 502 | (1) |
| | 502 | (1) |
| | 502 | (3) |
| CHAPTER 14 Don't Mix Pointers and Relations! | | | 505 | (20) |
| | 505 | (1) |
| Comments on republication | | | 505 | (1) |
| | 506 | (1) |
| | 507 | (1) |
| Relation values and relation variables | | | 508 | (1) |
| Referencing and dereferencing | | | 509 | (2) |
| Mixing pointers and relations: the basic idea | | | 511 | (4) |
| A closer look at the basic idea | | | 515 | (1) |
| | 516 | (1) |
| | 517 | (5) |
| | 522 | (1) |
| | 522 | (1) |
| | 523 | (2) |
| CHAPTER 15 Don't Mix Pointers and Relations--Please! | | | 525 | (14) |
| | 525 | (1) |
| | 525 | (1) |
| | 526 | (1) |
| | 526 | (3) |
| | 529 | (5) |
| | 534 | (2) |
| Why we don't need "references" | | | 536 | (2) |
| | 538 | (1) |
| | 538 | (1) |
| APPENDIX Database Graffiti (script for a live presentation) | | | 539 | (40) |
| | 539 | (1) |
| | 539 | (1) |
| | 539 | (2) |
| | 541 | (4) |
| | 545 | (3) |
| Normalization, networks, and nulls | | | 548 | (2) |
| | 550 | (2) |
| The joy of self-reference | | | 552 | (1) |
| Some fundamental principles | | | 553 | (11) |
| Relational database: further misconceptions number 4 | | | 564 | (6) |
| | 570 | (4) |
| | 574 | (2) |
| | 576 | (1) |
| The great database limerick competition | | | 577 | (1) |
| | 577 | (2) |
Index | | 579 | |